Source/JavaScriptCore: Another Windows build fix attempt after r150160.
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2013-05-15  Ryosuke Niwa  <rniwa@webkit.org>
2
3         Another Windows build fix attempt after r150160.
4
5         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
6         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
7
8 2013-05-15  Oliver Hunt  <oliver@apple.com>
9
10         RefCountedArray needs to use vector initialisers for its backing store
11         https://bugs.webkit.org/show_bug.cgi?id=116194
12
13         Reviewed by Gavin Barraclough.
14
15         Use an out of line function to clear the exception stack to avoid
16         needing to include otherwise unnecessary headers all over the place.
17
18         Everything else is just being updated to use that.
19
20         * bytecompiler/BytecodeGenerator.cpp:
21         * interpreter/CallFrame.h:
22         (JSC::ExecState::clearSupplementaryExceptionInfo):
23         * interpreter/Interpreter.cpp:
24         (JSC::Interpreter::addStackTraceIfNecessary):
25         (JSC::Interpreter::throwException):
26         * runtime/JSGlobalObject.cpp:
27         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope):
28         * runtime/VM.cpp:
29         (JSC):
30         (JSC::VM::clearExceptionStack):
31         * runtime/VM.h:
32         (VM):
33         (JSC::VM::exceptionStack):
34
35 2013-05-15  Commit Queue  <commit-queue@webkit.org>
36
37         Unreviewed, rolling out r150051.
38         http://trac.webkit.org/changeset/150051
39         https://bugs.webkit.org/show_bug.cgi?id=116186
40
41         Broke all JSC tests on Mac and the author is unresponsive
42         (Requested by rniwa on #webkit).
43
44         * JavaScriptCore.xcodeproj/project.pbxproj:
45
46 2013-05-15  Julien Brianceau  <jbrianceau@nds.com>
47
48         Remove savedTimeoutReg from JITStackFrame for sh4 base JIT.
49         https://bugs.webkit.org/show_bug.cgi?id=116143
50
51         Reviewed by Geoffrey Garen.
52
53         Since r148119, timeoutCheckRegister is removed from baseline JIT.
54         So we don't need to save r8 register in JITStackFrame anymore for sh4.
55
56         * jit/JITStubs.cpp:
57         * jit/JITStubs.h:
58         (JITStackFrame):
59
60 2013-05-15  Nico Weber  <thakis@chromium.org>
61
62         WebKit doesn't support MSVS2003 any more, remove preprocessor checks for older versions.
63         https://bugs.webkit.org/show_bug.cgi?id=116157
64
65         Reviewed by Anders Carlsson.
66
67         Also remove a gcc3.2 workaround.
68
69         Merges parts of these two commits by the talented Nico Weber:
70         https://chromium.googlesource.com/chromium/blink/+/3677e2f47348daeff405a40b6f90fbdf0654c2f5
71         https://chromium.googlesource.com/chromium/blink/+/0fcd96c448dc30be1416dcc15713c53710c1a312
72
73         * os-win32/inttypes.h:
74
75 2013-05-13  Alvaro Lopez Ortega  <alvaro@alobbs.com>
76
77         Nightly build's jsc doesn't work without DYLD_FRAMEWORK...
78         https://bugs.webkit.org/show_bug.cgi?id=79065
79
80         Reviewed by Darin Adler.
81
82         Fixes the build process so the depencencies of the jsc binary are
83         modified before its copied to its target directory. In this way
84         jsc should always use relative reference to the JavaScriptCore
85         libraries.
86
87         * JavaScriptCore.xcodeproj/project.pbxproj: Fixes the commands in
88         the "Copy Into Framework" target.
89
90 2013-05-13  Mark Hahnenberg  <mhahnenberg@apple.com>
91
92         Objective-C API: scanExternalObjectGraph should not create new JSVirtualMachine wrappers
93         https://bugs.webkit.org/show_bug.cgi?id=116074
94
95         If scanExternalObjectGraph creates a new JSVirtualMachine wrapper during collection, when the 
96         scanExternalObjectGraph call finishes and the autorelease pool is drained we will dealloc the 
97         JSVirtualMachine which will cause us to try to take the API lock for the corresponding VM. 
98         If this happens on a GC thread other than the "main" thread, we will deadlock. The solution 
99         is to just check the VM cache, and if there is no JSVirtualMachine wrapper, return early.
100
101         Reviewed by Darin Adler.
102
103         * API/JSVirtualMachine.mm:
104         (scanExternalObjectGraph):
105
106 2013-05-13  Benjamin Poulain  <benjamin@webkit.org>
107
108         Improve stringProtoFuncLastIndexOf for the prefix case
109         https://bugs.webkit.org/show_bug.cgi?id=115952
110
111         Reviewed by Geoffrey Garen.
112
113         * runtime/StringPrototype.cpp:
114         (JSC::stringProtoFuncLastIndexOf):
115         Use the optimized string search when possible.
116
117         On Joseph Pecoraro's tests, this gives a ~30% speed improvement.
118
119 2013-05-13  Zalan Bujtas  <zalan@apple.com>
120
121         WebProcess consuming very high CPU on linkedin.com
122         https://bugs.webkit.org/show_bug.cgi?id=115601
123
124         Reviewed by Andreas Kling.
125
126         Disable WEB_TIMING_MINIMAL.
127         Turn off window.performance and performance.now(). Some JS frameworks expect
128         additional Web Timing APIs, when performance.now() is available.
129
130         * Configurations/FeatureDefines.xcconfig:
131
132 2013-05-12  Anders Carlsson  <andersca@apple.com>
133
134         Stop including UnusedParam.h
135         https://bugs.webkit.org/show_bug.cgi?id=116003
136
137         Reviewed by Sam Weinig.
138
139         UnusedParam.h is empty now so there's no need to include it anymore.
140
141         * API/APICast.h:
142         * API/tests/JSNode.c:
143         * API/tests/JSNodeList.c:
144         * API/tests/minidom.c:
145         * API/tests/testapi.c:
146         * assembler/AbstractMacroAssembler.h:
147         * assembler/MacroAssemblerCodeRef.h:
148         * bytecode/CodeBlock.cpp:
149         * heap/HandleStack.h:
150         * interpreter/JSStackInlines.h:
151         * jit/CompactJITCodeMap.h:
152         * jit/ExecutableAllocator.h:
153         * parser/SourceProvider.h:
154         * runtime/DatePrototype.cpp:
155         * runtime/JSNotAnObject.cpp:
156         * runtime/JSSegmentedVariableObject.h:
157         * runtime/JSVariableObject.h:
158         * runtime/Options.cpp:
159         * runtime/PropertyOffset.h:
160
161 2013-05-11  Martin Robinson  <mrobinson@igalia.com>
162
163         [GTK] Add a basic cmake build for WTF and JavaScriptCore
164         https://bugs.webkit.org/show_bug.cgi?id=115967
165
166         Reviewed by Laszlo Gombos.
167
168         * PlatformGTK.cmake: Added.
169         * shell/PlatformGTK.cmake: Added.
170
171 2013-05-10  Laszlo Gombos  <l.gombos@samsung.com>
172
173         Remove USE(OS_RANDOMNESS)
174         https://bugs.webkit.org/show_bug.cgi?id=108095
175
176         Reviewed by Darin Adler.
177
178         Remove the USE(OS_RANDOMNESS) guard as it is turned on for all
179         ports.
180
181         * jit/JIT.cpp:
182         (JSC::JIT::JIT):
183
184 2013-05-10  Mark Hahnenberg  <mhahnenberg@apple.com>
185
186         Rename StructureCheckHoistingPhase to TypeCheckHoistingPhase
187         https://bugs.webkit.org/show_bug.cgi?id=115938
188
189         We're going to add some more types of check hoisting soon, so let's have the right name here.
190
191         Rubber stamped by Filip Pizlo.
192         
193         * CMakeLists.txt:
194         * GNUmakefile.list.am:
195         * JavaScriptCore.xcodeproj/project.pbxproj:
196         * Target.pri:
197         * dfg/DFGDriver.cpp:
198         (JSC::DFG::compile):
199         * dfg/DFGStructureCheckHoistingPhase.cpp: Removed.
200         * dfg/DFGStructureCheckHoistingPhase.h: Removed.
201         * dfg/DFGTypeCheckHoistingPhase.cpp: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.cpp.
202         (JSC::DFG::TypeCheckHoistingPhase::TypeCheckHoistingPhase):
203         (JSC::DFG::performTypeCheckHoisting):
204         * dfg/DFGTypeCheckHoistingPhase.h: Copied from Source/JavaScriptCore/dfg/DFGStructureCheckHoistingPhase.h.
205
206 2013-05-09  Christophe Dumez  <ch.dumez@sisa.samsung.com>
207
208         Unreviewed build fix after r149836.
209
210         It broke at least EFL and GTK builds. Move new static members initialization
211         outside the class. Those need to have a definition outside the class because
212         their address is used (e.g. CodeCacheMap::nonGlobalWorkingSetMaxEntries).
213
214         * runtime/CodeCache.cpp:
215         (JSC):
216         * runtime/CodeCache.h:
217         (CodeCacheMap):
218
219 2013-05-08  Oliver Hunt  <oliver@apple.com>
220
221         Code cache stores bogus var references for functions in eval code
222         https://bugs.webkit.org/show_bug.cgi?id=115747
223
224         Reviewed by Mark Hahnenberg.
225
226         Non-global eval now uses a per-CodeBlock cache, and only use it
227         when we're at the top of a function's scope.  This means that we
228         will no longer cache the parsing of a single string across
229         multiple functions, and we won't cache when we're nested inside
230         constructs like |with| and |catch| where previously we would, which
231         is good because caching in those cases is unsound.
232
233         * bytecode/EvalCodeCache.h:
234         (JSC):
235         (JSC::EvalCodeCache::getSlow):
236         (JSC::EvalCodeCache::get):
237         * bytecode/UnlinkedCodeBlock.h:
238         (JSC::UnlinkedCodeBlock::codeCacheForEval):
239         (UnlinkedCodeBlock):
240         (RareData):
241         * debugger/Debugger.cpp:
242         (JSC::evaluateInGlobalCallFrame):
243         * debugger/DebuggerCallFrame.cpp:
244         (JSC::DebuggerCallFrame::evaluate):
245         * interpreter/Interpreter.cpp:
246         (JSC::eval):
247         * runtime/CodeCache.cpp:
248         (JSC::CodeCache::CodeCache):
249         (JSC::CodeCache::generateBytecode):
250         (JSC):
251         (JSC::CodeCache::getCodeBlock):
252         * runtime/CodeCache.h:
253         (JSC::CodeCacheMap::CodeCacheMap):
254         (CodeCacheMap):
255         (JSC::CodeCacheMap::canPruneQuickly):
256         (JSC::CodeCacheMap::prune):
257         (JSC::CodeCache::create):
258         (CodeCache):
259         * runtime/Executable.cpp:
260         (JSC::EvalExecutable::EvalExecutable):
261         (JSC::EvalExecutable::compileInternal):
262         * runtime/Executable.h:
263         (JSC::EvalExecutable::create):
264         (EvalExecutable):
265         * runtime/JSGlobalObject.cpp:
266         (JSC::JSGlobalObject::createEvalCodeBlock):
267         * runtime/JSGlobalObject.h:
268         (JSGlobalObject):
269         * runtime/JSGlobalObjectFunctions.cpp:
270         (JSC::globalFuncEval):
271         * runtime/VM.cpp:
272         (JSC::VM::VM):
273         * runtime/VM.h:
274         (VM):
275
276 2013-05-08  Mark Hahnenberg  <mhahnenberg@apple.com>
277
278         DFGArrayMode::fromObserved is too liberal when it sees different Array and NonArray shapes
279         https://bugs.webkit.org/show_bug.cgi?id=115805
280
281         Reviewed by Geoffrey Garen.
282
283         It checks the observed ArrayModes to see if we have seen any ArrayWith* first. If so, it assumes it's 
284         an Array::Array, even if we've also observed any NonArrayWith* in the ArrayProfile. This leads to the 
285         code generated by jumpSlowForUnwantedArrayMode to check the indexing type against (shape | IsArray) 
286         instead of just shape, which can cause us to exit a lot in the case that we saw a NonArray.
287
288         To fix this we need to add a case that checks for both ArrayWith* and NonArrayWith* cases first, which 
289         should then use Array::PossiblyArray, then do the checks we were already doing.
290
291         * bytecode/ArrayProfile.h:
292         (JSC::hasSeenArray):
293         (JSC::hasSeenNonArray):
294         * dfg/DFGArrayMode.cpp:
295         (JSC::DFG::ArrayMode::fromObserved):
296
297 2013-05-09  Joe Mason  <jmason@blackberry.com>
298
299         [BlackBerry] Set up logging buffer on start of jsc executable
300         https://bugs.webkit.org/show_bug.cgi?id=114688
301
302         Reviewed by Rob Buis.
303
304         Internal PR: 322715
305         Internally Reviewed By: Jeff Rogers
306
307         * jsc.cpp:
308         (main): call BB::Platform::setupApplicationLogging
309
310 2013-05-08  Michael Saboff  <msaboff@apple.com>
311
312         JSC: There should be a disassembler for ARM Thumb 2
313         https://bugs.webkit.org/show_bug.cgi?id=115827
314
315         Reviewed by Filip Pizlo.
316
317         Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
318         and profiling code.  The opcode coverage is currently not complete.  It covers all
319         of the integer instructions JSC currently emits, but only a limited number of
320         floating point opcodes.  Currently that is just the 64 bit vmov and vmsr instructions.
321
322         The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
323         for each instruction group.  There is a public format method that does the bulk of
324         the disassembly work.  There are two broad sub-classes, ARMv7D16BitOpcode and
325         ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes.  There are sub-classes under
326         those two classes for individual and related groups of opcodes.  Instructions are
327         "dispatched" to the right subclass via two arrays of linked lists in the inner classes
328         OpcodeGroup.  There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
329         Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
330         that it matches a particular group.  OpcodeGroup uses a static method to reinterpret_cast
331         the Opcode object to the right base class for the instruction group for formatting.
332         The cast eliminates the need of allocating an object for each decoded instruction.
333         Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
334         the instruction is 16 or 32 bit.
335
336         * JavaScriptCore.xcodeproj/project.pbxproj:
337         * disassembler/ARMv7: Added.
338         * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
339         (ARMv7Disassembler):
340         (OpcodeGroupInitializer):
341         (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
342         (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
343         (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
344         (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
345         (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
346         (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
347         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
348         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
349         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
350         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
351         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
352         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
353         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
354         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
355         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
356         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
357         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
358         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
359         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
360         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
361         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
362         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
363         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
364         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
365         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
366         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
367         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
368         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
369         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
370         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
371         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
372         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
373         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
374         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
375         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
376         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
377         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
378         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
379         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
380         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
381         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
382         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
383         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
384         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
385         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
386         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
387         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
388         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
389         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
390         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
391         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
392         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
393         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
394         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
395         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
396         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
397         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
398         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
399         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
400         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
401         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
402         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
403         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
404         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
405         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
406         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
407         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
408         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
409         * disassembler/ARMv7/ARMv7DOpcode.h: Added.
410         (ARMv7Disassembler):
411         (ARMv7DOpcode):
412         (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
413         (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
414         (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
415         (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
416         (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
417         (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
418         (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
419         (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
420         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
421         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
422         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
423         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
424         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
425         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
426         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
427         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
428         (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
429         (ARMv7D16BitOpcode):
430         (OpcodeGroup):
431         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
432         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
433         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
434         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
435         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
436         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
437         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
438         (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
439         (ARMv7DOpcodeAddRegisterT2):
440         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
441         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
442         (ARMv7DOpcodeAddSPPlusImmediate):
443         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
444         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
445         (ARMv7DOpcodeAddSubtract):
446         (ARMv7DOpcodeAddSubtractT1):
447         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
448         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
449         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
450         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
451         (ARMv7DOpcodeAddSubtractImmediate3):
452         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
453         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
454         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
455         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
456         (ARMv7DOpcodeAddSubtractImmediate8):
457         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
458         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
459         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
460         (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
461         (ARMv7DOpcodeBranchConditionalT1):
462         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
463         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
464         (ARMv7DOpcodeBranchExchangeT1):
465         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
466         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
467         (ARMv7DOpcodeBranchT2):
468         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
469         (ARMv7DOpcodeCompareImmediateT1):
470         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
471         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
472         (ARMv7DOpcodeCompareRegisterT1):
473         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
474         (ARMv7DOpcodeCompareRegisterT2):
475         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
476         (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
477         (ARMv7DOpcodeDataProcessingRegisterT1):
478         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
479         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
480         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
481         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
482         (ARMv7DOpcodeGeneratePCRelativeAddress):
483         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
484         (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
485         (ARMv7DOpcodeLoadFromLiteralPool):
486         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
487         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
488         (ARMv7DOpcodeLoadStoreRegisterImmediate):
489         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
490         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
491         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
492         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
493         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
494         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
495         (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
496         (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
497         (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
498         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
499         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
500         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
501         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
502         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
503         (ARMv7DOpcodeLoadStoreRegisterSPRelative):
504         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
505         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
506         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
507         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
508         (ARMv7DOpcodeLogicalImmediateT1):
509         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
510         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
511         (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
512         (ARMv7DOpcodeMiscAddSubSP):
513         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
514         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
515         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
516         (ARMv7DOpcodeMiscByteHalfwordOps):
517         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
518         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
519         (ARMv7DOpcodeMiscBreakpointT1):
520         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
521         (ARMv7DOpcodeMiscCompareAndBranch):
522         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
523         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
524         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
525         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
526         (ARMv7DOpcodeMiscHint16):
527         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
528         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
529         (ARMv7DOpcodeMiscIfThenT1):
530         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
531         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
532         (ARMv7DOpcodeMiscPushPop):
533         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
534         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
535         (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
536         (ARMv7DOpcodeMoveImmediateT1):
537         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
538         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
539         (ARMv7DOpcodeMoveRegisterT1):
540         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
541         (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
542         (ARMv7D32BitOpcode):
543         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
544         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
545         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
546         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
547         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
548         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
549         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
550         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
551         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
552         (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
553         (ARMv7DOpcodeBranchRelative):
554         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
555         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
556         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
557         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
558         (ARMv7DOpcodeConditionalBranchT3):
559         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
560         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
561         (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
562         (ARMv7DOpcodeBranchOrBranchLink):
563         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
564         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
565         (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
566         (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
567         (ARMv7DOpcodeDataProcessingModifiedImmediate):
568         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
569         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
570         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
571         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
572         (ARMv7DOpcodeDataProcessingShiftedReg):
573         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
574         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
575         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
576         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
577         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
578         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
579         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
580         (ARMv7DOpcodeDataProcessingReg):
581         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
582         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
583         (ARMv7DOpcodeDataProcessingRegShift):
584         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
585         (ARMv7DOpcodeDataProcessingRegExtend):
586         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
587         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
588         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
589         (ARMv7DOpcodeDataProcessingRegParallel):
590         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
591         (ARMv7DOpcodeDataProcessingRegMisc):
592         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
593         (ARMv7DOpcodeHint32):
594         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
595         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
596         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
597         (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
598         (ARMv7DOpcodeFPTransfer):
599         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
600         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
601         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
602         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
603         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
604         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
605         (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
606         (ARMv7DOpcodeDataLoad):
607         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
608         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
609         (ARMv7DOpcodeLoadRegister):
610         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
611         (ARMv7DOpcodeLoadSignedImmediate):
612         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
613         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
614         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
615         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
616         (ARMv7DOpcodeLoadUnsignedImmediate):
617         (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
618         (ARMv7DOpcodeLongMultipleDivide):
619         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
620         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
621         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
622         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
623         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
624         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
625         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
626         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
627         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
628         (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
629         (ARMv7DOpcodeDataPushPopSingle):
630         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
631         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
632         (ARMv7DOpcodeDataStoreSingle):
633         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
634         (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
635         (ARMv7DOpcodeStoreSingleImmediate12):
636         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
637         (ARMv7DOpcodeStoreSingleImmediate8):
638         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
639         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
640         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
641         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
642         (ARMv7DOpcodeStoreSingleRegister):
643         (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
644         (ARMv7DOpcodeUnmodifiedImmediate):
645         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
646         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
647         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
648         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
649         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
650         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
651         (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
652         (ARMv7DOpcodeVMOVDoublePrecision):
653         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
654         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
655         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
656         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
657         (ARMv7DOpcodeVMOVSinglePrecision):
658         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
659         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
660         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
661         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
662         (ARMv7DOpcodeVMSR):
663         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
664         (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
665         * disassembler/ARMv7Disassembler.cpp: Added.
666         (JSC::tryToDisassemble):
667
668 2013-05-07  Julien Brianceau  <jbrianceau@nds.com>
669
670         Take advantage of pre-decrement and post-increment opcodes for sh4 base JIT.
671         https://bugs.webkit.org/show_bug.cgi?id=115722
672
673         Reviewed by Oliver Hunt.
674
675         * assembler/MacroAssemblerSH4.h:
676         (JSC::MacroAssemblerSH4::load8PostInc):
677         (MacroAssemblerSH4):
678         (JSC::MacroAssemblerSH4::load16Unaligned):
679         (JSC::MacroAssemblerSH4::load16PostInc):
680         (JSC::MacroAssemblerSH4::storeDouble):
681         (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
682         * assembler/SH4Assembler.h:
683         (JSC::SH4Assembler::movwMemRegIn):
684         (SH4Assembler):
685         (JSC::SH4Assembler::movbMemRegIn):
686         (JSC::SH4Assembler::printInstr):
687
688 2013-05-07  Anders Carlsson  <andersca@apple.com>
689
690         Remove AlwaysInline.h from WTF
691         https://bugs.webkit.org/show_bug.cgi?id=115727
692
693         Reviewed by Brent Fulgham.
694
695         The macro that used to be in AlwaysInline.h is now in Compiler.h so there's no reason
696         to keep AlwaysInline.h around anymore.
697
698         * jit/JSInterfaceJIT.h:
699         * parser/Lexer.h:
700         * runtime/JSCJSValue.h:
701         * runtime/SymbolTable.h:
702
703 2013-05-07  Mikhail Pozdnyakov  <mikhail.pozdnyakov@intel.com>
704
705         HashTraits<RefPtr<P> >::PeekType should be raw pointer for better performance
706         https://bugs.webkit.org/show_bug.cgi?id=115646
707
708         Reviewed by Darin Adler.
709
710         * bytecompiler/StaticPropertyAnalyzer.h:
711         (JSC::StaticPropertyAnalyzer::putById):
712             Updated accordingly to new HashMap<.., RefPtr>::get() semantics.
713
714 2013-05-06  Julien Brianceau  <jbrianceau@nds.com>
715
716         Misc bugfix and cleaning in sh4 base JIT.
717         https://bugs.webkit.org/show_bug.cgi?id=115627
718
719         Reviewed by Oliver Hunt.
720
721         Get rid of loadX(RegisterID r0, RegisterID src, RegisterID dest) functions.
722         Remove misplaced extuw() implementation from MacroAssemblerSH4.
723         Add movbRegMemr0 and movwRegMemr0 functions in SH4Assembler.
724
725         * assembler/MacroAssemblerSH4.h:
726         (JSC::MacroAssemblerSH4::add32): Skip operation when first operand is a zero immediate.
727         (JSC::MacroAssemblerSH4::sub32): Skip operation when first operand is a zero immediate.
728         (JSC::MacroAssemblerSH4::load32): Fix wrong usage of r0 register.
729         (JSC::MacroAssemblerSH4::load8Signed): Handle "base == r0" case.
730         (MacroAssemblerSH4):
731         (JSC::MacroAssemblerSH4::load16): Handle "base == r0" case.
732         (JSC::MacroAssemblerSH4::load16Unaligned): Use extuw() implementation from SH4Assembler.
733         (JSC::MacroAssemblerSH4::load16Signed): Cosmetic change.
734         (JSC::MacroAssemblerSH4::store8): Fix unhandled BaseIndex offset and handle (base == r0) case.
735         (JSC::MacroAssemblerSH4::store16): Fix unhandled BaseIndex offset and handle (base == r0) case.
736         (JSC::MacroAssemblerSH4::store32):
737         * assembler/SH4Assembler.h:
738         (JSC::SH4Assembler::movwRegMemr0):
739         (SH4Assembler):
740         (JSC::SH4Assembler::movbRegMemr0):
741         (JSC::SH4Assembler::placeConstantPoolBarrier): Cosmetic change.
742         (JSC::SH4Assembler::maxJumpReplacementSize):
743         (JSC::SH4Assembler::replaceWithJump): Correct branch range and save an opcode.
744         (JSC::SH4Assembler::printInstr):
745
746 2013-05-06  Anders Carlsson  <andersca@apple.com>
747
748         Stop using WTF::deleteAllValues in JavaScriptCore
749         https://bugs.webkit.org/show_bug.cgi?id=115670
750
751         Reviewed by Oliver Hunt.
752
753         Change the Vectors used to Vectors of OwnPtrs instead.
754
755         * heap/DFGCodeBlocks.cpp:
756         (JSC::DFGCodeBlocks::~DFGCodeBlocks):
757         (JSC::DFGCodeBlocks::deleteUnmarkedJettisonedCodeBlocks):
758
759 2013-05-06  Andras Becsi  <andras.becsi@digia.com>
760
761         Build with GCC 4.8 fails because of -Wmaybe-uninitialized
762         https://bugs.webkit.org/show_bug.cgi?id=115648
763
764         Reviewed by Michael Saboff.
765
766         Initialize values in Options::setOption since from
767         there we end up calling OptionRange::init with
768         uninitialized members.
769
770         * runtime/Options.cpp:
771
772 2013-05-06  Gabor Rapcsanyi  <rgabor@webkit.org>
773
774         JSC ARM traditional failing on Octane NavierStokes test
775         https://bugs.webkit.org/show_bug.cgi?id=115626
776
777         Reviewed by Zoltan Herczeg.
778
779         Change the ARM traditional assembler to use double precision on value
780         conversions.
781
782         * assembler/ARMAssembler.h:
783
784 2013-05-03  Michael Saboff  <msaboff@apple.com>
785
786         There should be a runtime option to constrain what functions get DFG compiled
787         https://bugs.webkit.org/show_bug.cgi?id=115576
788
789         Reviewed by Mark Hahnenberg.
790
791         Added OptionRange to Options to allow checking that something is within an option
792         or not.  The new OptionClass supports range strings in the form of [!]<low>[:<high>].
793         If only one value is given, then it will be used for both low and high.  A leading
794         '!' inverts the check.  If no range is given, then checking for a value within a range
795         will always return true.  Added the option "bytecodeRangeToDFGCompile" that takes an
796         OptionRange string to select the bytecode range of code blocks to DFG compile.
797
798         * dfg/DFGDriver.cpp:
799         (JSC::DFG::compile): Added new check for bytecode count within bytecodeRangeToDFGCompile
800         range.
801         * runtime/Options.cpp:
802         (JSC::parse): Added overloaded parse() for OptionRange.
803         (JSC::OptionRange::init): Parse range string and then initialize the range.
804         (JSC::OptionRange::isInRange): Function used by consumer to check if a value is within
805         the specified range.
806         (JSC::Options::dumpOption): Added code to dump OptionRange options.
807         * runtime/Options.h:
808         (OptionRange): New class.
809         (JSC::OptionRange::operator= ): This is really used as a default ctor for use within
810         the Option static array initialization.
811         (JSC::OptionRange::rangeString): This is used for debug.  It assumes that the char*
812         passed into OptionRange::init is valid when this function is called.
813
814 2013-05-02  Oliver Hunt  <oliver@apple.com>
815
816         Fix potential bug in lookup logic
817         https://bugs.webkit.org/show_bug.cgi?id=115522
818
819         Reviewed by Mark Hahnenberg.
820
821         Though not a problem in practise, it is technically possible
822         to inject an un-proxied global object into the scope chain
823         via the C API.  This change makes sure that the scope walk
824         in BytecodeGenerator actually limits itself to scopes that
825         are statically bindable.
826
827         * bytecompiler/BytecodeGenerator.cpp:
828         (JSC::BytecodeGenerator::resolve):
829         * runtime/JSObject.h:
830         (JSObject):
831         (JSC):
832         (JSC::JSObject::isStaticScopeObject):
833
834 2013-05-01  Roger Fong  <roger_fong@apple.com>
835
836         Set Path in makefile for AppleWin.
837
838         * JavaScriptCore.vcxproj/JavaScriptCore.make:
839
840 2013-05-01  Benjamin Poulain  <benjamin@webkit.org>
841
842         Remove the remaining wscript
843         https://bugs.webkit.org/show_bug.cgi?id=115459
844
845         Reviewed by Andreas Kling.
846
847         * wscript: Removed.
848
849 2013-04-30  Mark Lam  <mark.lam@apple.com>
850
851         JSContextGroupSetExecutionTimeLimit() should not pass a callback to the
852         VM watchdog if its client did not pass one in.
853         https://bugs.webkit.org/show_bug.cgi?id=115461.
854
855         Reviewed by Geoffrey Garen.
856
857         * API/JSContextRef.cpp:
858         (internalScriptTimeoutCallback):
859         (JSContextGroupSetExecutionTimeLimit):
860         * API/tests/testapi.c:
861         (main):
862         - Added test case when the time limit callback is 0.
863         - Also updated a check to verify that a TerminatedExecutionException is
864           thrown when the time out is cancelled.
865         - Also fixed some cosmetic typos.
866
867 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
868
869         Removed op_ensure_property_exists
870         https://bugs.webkit.org/show_bug.cgi?id=115460
871
872         Reviewed by Mark Hahnenberg.
873
874         It was unused, and whatever it was once used for was not optimized.
875
876         * JavaScriptCore.order:
877         * bytecode/CodeBlock.cpp:
878         (JSC::CodeBlock::dumpBytecode):
879         * bytecode/Opcode.h:
880         (JSC::padOpcodeName):
881         * jit/JIT.cpp:
882         (JSC::JIT::privateCompileMainPass):
883         * jit/JIT.h:
884         * jit/JITOpcodes.cpp:
885         * jit/JITOpcodes32_64.cpp:
886         * jit/JITStubs.cpp:
887         * jit/JITStubs.h:
888         * llint/LLIntSlowPaths.cpp:
889         * llint/LLIntSlowPaths.h:
890         * llint/LowLevelInterpreter.asm:
891
892 2013-04-30  Oliver Hunt  <oliver@apple.com>
893
894         JSC Stack walking logic craches in the face of inlined functions triggering VM re-entry
895         https://bugs.webkit.org/show_bug.cgi?id=115449
896
897         Reviewed by Geoffrey Garen.
898
899         Rename callframeishost to something that makes sense, and fix
900         getCallerInfo to correctly handle inline functions calling into
901         the VM.
902
903         * bytecode/CodeBlock.cpp:
904         (JSC::CodeBlock::codeOriginForReturn):
905           Make this more robust in the face of incorrect stack walking
906         * interpreter/CallFrame.cpp:
907         (JSC::CallFrame::trueCallerFrame):
908           Everyone has to perform a codeblock() check before calling this
909           so we might as well just do it here.
910         * interpreter/Interpreter.cpp:
911         (JSC::getCallerInfo):
912
913 2013-04-30  Julien Brianceau  <jbrianceau@nds.com>
914
915         Bug fixing in sh4 base JIT and LLINT.
916         https://bugs.webkit.org/show_bug.cgi?id=115420
917
918         Reviewed by Oliver Hunt.
919
920         * assembler/MacroAssemblerSH4.h:
921         (JSC::MacroAssemblerSH4::lshift32):
922         (JSC::MacroAssemblerSH4::rshift32):
923         (JSC::MacroAssemblerSH4::branchMul32):
924         (JSC::MacroAssemblerSH4::urshift32):
925         (JSC::MacroAssemblerSH4::replaceWithJump):
926         (JSC::MacroAssemblerSH4::maxJumpReplacementSize):
927         * assembler/SH4Assembler.h:
928         (JSC::SH4Assembler::shldRegReg):
929         (JSC::SH4Assembler::shadRegReg):
930         (JSC::SH4Assembler::shalImm8r):
931         (SH4Assembler):
932         (JSC::SH4Assembler::sharImm8r):
933         (JSC::SH4Assembler::maxJumpReplacementSize):
934         (JSC::SH4Assembler::replaceWithJump):
935         * offlineasm/sh4.rb:
936
937 2013-04-30  Geoffrey Garen  <ggaren@apple.com>
938
939         Objective-C JavaScriptCore API should publicly support bridging to C
940         https://bugs.webkit.org/show_bug.cgi?id=115447
941
942         Reviewed by Mark Hahnenberg.
943
944         For consistency, I renamed
945
946             +[JSValue valueWithValue:] => +[JSValue valueWithJSValueRef]
947             +[JSContext contextWithGlobalContextRef] => +[JSContext contextWithJSGlobalContextRef]
948             -[JSContext globalContext] => -[JSContext JSGlobalContextRef]
949
950         I searched svn to verify that these functions don't have clients yet,
951         so we won't break anything.
952
953         I also exported as public API
954
955             +[JSValue valueWithJSValueRef:]
956             +[JSContext contextWithJSGlobalContextRef:]
957
958         It's hard to integrate with the C API without these.
959
960 2013-04-30  Commit Queue  <rniwa@webkit.org>
961
962         Unreviewed, rolling out r149349 and r149354.
963         http://trac.webkit.org/changeset/149349
964         http://trac.webkit.org/changeset/149354
965         https://bugs.webkit.org/show_bug.cgi?id=115444
966
967          The Thumb version of compileSoftModulo make invalid use of
968         registers (Requested by benjaminp on #webkit).
969
970         * CMakeLists.txt:
971         * GNUmakefile.list.am:
972         * JavaScriptCore.xcodeproj/project.pbxproj:
973         * assembler/ARMv7Assembler.h:
974         (ARMv7Assembler):
975         * assembler/AbstractMacroAssembler.h:
976         (JSC::isARMv7s):
977         (JSC):
978         * assembler/MacroAssemblerARMv7.cpp: Removed.
979         * assembler/MacroAssemblerARMv7.h:
980         (MacroAssemblerARMv7):
981         * dfg/DFGFixupPhase.cpp:
982         (JSC::DFG::FixupPhase::fixupNode):
983         * dfg/DFGOperations.cpp:
984         * dfg/DFGOperations.h:
985         * dfg/DFGSpeculativeJIT.cpp:
986         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
987         (DFG):
988         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARMv7s):
989         * dfg/DFGSpeculativeJIT.h:
990         (JSC::DFG::SpeculativeJIT::callOperation):
991         (SpeculativeJIT):
992         * dfg/DFGSpeculativeJIT32_64.cpp:
993         (JSC::DFG::SpeculativeJIT::compile):
994
995 2013-04-30  Zalan Bujtas  <zalan@apple.com>
996
997         Animations fail to start on http://www.google.com/insidesearch/howsearchworks/thestory/
998         https://bugs.webkit.org/show_bug.cgi?id=111244
999
1000         Reviewed by David Kilzer.
1001         
1002         Enable performance.now() as a minimal subset of Web Timing API. 
1003         It returns DOMHighResTimeStamp, a monotonically increasing value representing the 
1004         number of milliseconds from the start of the navigation of the current document.
1005         JS libraries use this API to check against the requestAnimationFrame() timestamp.
1006
1007         * Configurations/FeatureDefines.xcconfig:
1008
1009 2013-04-30  Zoltan Arvai  <zarvai@inf.u-szeged.hu>
1010
1011         Unreviewed. Speculative build fix on Qt Arm and Mips after r149349.
1012
1013         * dfg/DFGSpeculativeJIT.cpp:
1014         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1015
1016 2013-04-29  Cosmin Truta  <ctruta@blackberry.com>
1017
1018         [ARM] Expand the use of integer division
1019         https://bugs.webkit.org/show_bug.cgi?id=115138
1020
1021         Reviewed by Benjamin Poulain.
1022
1023         If availability of hardware integer division isn't known at compile
1024         time, check the CPU flags and decide at runtime whether to fall back
1025         to software. Currently, this OS-specific check is implemented on QNX.
1026
1027         Moreover, use operator % instead of fmod() in the calculation of the
1028         software modulo. Even when it's software-emulated, operator % is faster
1029         than fmod(): on ARM v7 QNX, without hardware division, we noticed
1030         >3% speedup on SunSpider.
1031
1032         * CMakeLists.txt:
1033         * GNUmakefile.list.am:
1034         * JavaScriptCore.xcodeproj/project.pbxproj:
1035         * assembler/ARMv7Assembler.h:
1036         (JSC::ARMv7Assembler::sdiv): Did not compile conditionally.
1037         (JSC::ARMv7Assembler::udiv): Ditto.
1038         * assembler/AbstractMacroAssembler.h:
1039         (JSC::isARMv7s): Removed.
1040         * assembler/MacroAssemblerARMv7.cpp: Added.
1041         (JSC::isIntegerDivSupported): Added.
1042         * assembler/MacroAssemblerARMv7.h:
1043         (JSC::MacroAssemblerARMv7::supportsIntegerDiv): Added.
1044         * dfg/DFGFixupPhase.cpp:
1045         (JSC::DFG::FixupPhase::fixupNode): Checked MacroAssembler::supportsIntegerDiv() in ArithDiv case.
1046         * dfg/DFGOperations.cpp:
1047         (JSC::DFG::operationModOnInts): Added.
1048         * dfg/DFGOperations.h:
1049         (JSC::DFG::Z_DFGOperation_ZZ): Added.
1050         * dfg/DFGSpeculativeJIT.cpp:
1051         (JSC::DFG::SpeculativeJIT::compileSoftModulo): Separated the X86-specific and ARM-specific codegen
1052         from the common implementation; used operationModOnInts on ARM.
1053         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForARM): Renamed from compileIntegerArithDivForARMv7.
1054         (JSC::DFG::SpeculativeJIT::compileArithMod): Allowed run-time detection of integer div on ARM.
1055         * dfg/DFGSpeculativeJIT.h:
1056         (JSC::DFG::SpeculativeJIT::callOperation): Added overloads with Z_DFGOperation_ZZ arguments.
1057         * dfg/DFGSpeculativeJIT32_64.cpp:
1058         (JSC::DFG::SpeculativeJIT::compile): Used compileIntegerArithDivForARM.
1059
1060 2013-04-29  Benjamin Poulain  <benjamin@webkit.org>
1061
1062         Unify the data access of StringImpl members from JavaScriptCore
1063         https://bugs.webkit.org/show_bug.cgi?id=115320
1064
1065         Reviewed by Andreas Kling.
1066
1067         DFG accesses the member infos by directly calling the methods on StringImpl,
1068         while the baseline JIT was using helper methods on ThunkHelpers.
1069
1070         Cut the middle man, and use StringImpl directly everywhere.
1071
1072         * jit/JITInlines.h:
1073         (JSC::JIT::emitLoadCharacterString):
1074         * jit/JITPropertyAccess.cpp:
1075         (JSC::JIT::stringGetByValStubGenerator):
1076         * jit/JITPropertyAccess32_64.cpp:
1077         (JSC::JIT::stringGetByValStubGenerator):
1078         * jit/JSInterfaceJIT.h:
1079         * jit/ThunkGenerators.cpp:
1080         (JSC::stringCharLoad):
1081
1082 2013-04-29  Benjamin Poulain  <bpoulain@apple.com>
1083
1084         Use push and pop for iOS math function thunks
1085         https://bugs.webkit.org/show_bug.cgi?id=115215
1086
1087         Reviewed by Filip Pizlo.
1088
1089         The iOS ABI is a little different than regular ARM ABI regarding stack alignment.
1090         The requirement is 4 bytes:
1091         "The ARM environment uses a stack that—at the point of function calls—is 4-byte aligned,
1092          grows downward, and contains local variables and a function’s parameters."
1093
1094         Subsequently, we can just use push and pop to preserve the link register.
1095
1096         * jit/ThunkGenerators.cpp:
1097
1098 2013-04-29  Brent Fulgham  <bfulgham@webkit.org>
1099
1100         [Windows, WinCairo] Get rid of last few pthread include/link references.
1101         https://bugs.webkit.org/show_bug.cgi?id=115375
1102
1103         Reviewed by Tim Horton.
1104
1105         * JavaScriptCore.vcproj/jsc/jscPostBuild.cmd:
1106         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
1107         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
1108         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
1109         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
1110         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
1111
1112 2013-04-29  Roger Fong  <roger_fong@apple.com>
1113
1114         Unreviewed. AppleWin VS2010 build fix.
1115
1116         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExports.def.in:
1117
1118 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
1119
1120         ~BlockAllocator should ASSERT that it has no more Regions left
1121         https://bugs.webkit.org/show_bug.cgi?id=115287
1122
1123         Reviewed by Andreas Kling.
1124
1125         * heap/BlockAllocator.cpp:
1126         (JSC::BlockAllocator::~BlockAllocator):
1127         (JSC::BlockAllocator::allRegionSetsAreEmpty):
1128         * heap/BlockAllocator.h:
1129         (RegionSet):
1130         (JSC::BlockAllocator::RegionSet::isEmpty):
1131         (BlockAllocator):
1132
1133 2013-04-29  Mark Hahnenberg  <mhahnenberg@apple.com>
1134
1135         IndexingTypes should use hex
1136         https://bugs.webkit.org/show_bug.cgi?id=115286
1137
1138         Decimal is kind of confusing/hard to read because they're used as bit masks. Hex seems more appropriate.
1139
1140         Reviewed by Geoffrey Garen.
1141
1142         * runtime/IndexingType.h:
1143
1144 2013-04-29  Carlos Garcia Campos  <cgarcia@igalia.com>
1145
1146         Unreviewed. Fix make distcheck.
1147
1148         * GNUmakefile.list.am: Add missing headers files to compilation
1149         and offlineasm/sh4.rb script.
1150
1151 2013-04-28  Dean Jackson  <dino@apple.com>
1152
1153         [Mac] Disable canvas backing store scaling (HIGH_DPI_CANVAS)
1154         https://bugs.webkit.org/show_bug.cgi?id=115310
1155
1156         Reviewed by Simon Fraser.
1157
1158         Remove ENABLE_HIGH_DPI_CANVAS_macosx.
1159
1160         * Configurations/FeatureDefines.xcconfig:
1161
1162 2013-04-27  Darin Adler  <darin@apple.com>
1163
1164         Move from constructor and member function adoptCF/NS to free function adoptCF/NS.
1165         https://bugs.webkit.org/show_bug.cgi?id=115307
1166
1167         Reviewed by Geoffrey Garen.
1168
1169         * heap/HeapTimer.cpp:
1170         (JSC::HeapTimer::HeapTimer):
1171         * runtime/VM.cpp:
1172         (JSC::enableAssembler):
1173         Use adoptCF free function.
1174
1175 2013-04-27  Anders Carlsson  <andersca@apple.com>
1176
1177         Try to fix the Windows build.
1178
1179         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreExports.def:
1180
1181 2013-04-25  Geoffrey Garen  <ggaren@apple.com>
1182
1183         Cleaned up pre/post inc/dec in bytecode
1184         https://bugs.webkit.org/show_bug.cgi?id=115222
1185
1186         Reviewed by Filip Pizlo.
1187
1188         A few related changes here:
1189
1190         (*) Removed post_inc and post_dec. The two-result form was awkward to
1191         reason about. Being explicit about the intermediate mov and to_number
1192         reduces DFG overhead, removes some fragile ASSERTs from the DFG, and
1193         fixes a const bug. Plus, we get to blow away 262 lines of code.
1194
1195         (*) Renamed pre_inc and pre_dec to inc and dec, since there's only one
1196         version now.
1197
1198         (*) Renamed to_jsnumber to to_number, to match the ECMA name.
1199
1200         (*) Tightened up the codegen and runtime support for to_number.
1201
1202
1203         * JavaScriptCore.order: Order!
1204
1205         * bytecode/CodeBlock.cpp:
1206         (JSC::CodeBlock::dumpBytecode):
1207         * bytecode/Opcode.h:
1208         (JSC::padOpcodeName):
1209         * bytecompiler/BytecodeGenerator.cpp:
1210         (JSC::BytecodeGenerator::emitInc):
1211         (JSC::BytecodeGenerator::emitDec):
1212         * bytecompiler/BytecodeGenerator.h:
1213         (JSC::BytecodeGenerator::emitToNumber):
1214         (BytecodeGenerator): Removed post_inc and post_dec.
1215
1216         * bytecompiler/NodesCodegen.cpp:
1217         (JSC::emitPreIncOrDec): Updated for rename.
1218
1219         (JSC::emitPostIncOrDec): Issue an explicit mov and to_number when needed.
1220         These are rare, and they boil away in the DFG.
1221
1222         (JSC::PostfixNode::emitResolve):
1223         (JSC::PrefixNode::emitResolve): For const, use an explicit mov instead
1224         of any special forms. This fixes a bug where we would do string
1225         add/subtract instead of number.
1226
1227         * dfg/DFGByteCodeParser.cpp:
1228         (JSC::DFG::ByteCodeParser::parseBlock):
1229         * dfg/DFGCapabilities.h:
1230         (JSC::DFG::canCompileOpcode):
1231         * jit/JIT.cpp:
1232         (JSC::JIT::privateCompileMainPass):
1233         (JSC::JIT::privateCompileSlowCases):
1234         * jit/JIT.h:
1235         * jit/JITArithmetic.cpp:
1236         (JSC::JIT::emit_op_inc):
1237         (JSC::JIT::emitSlow_op_inc):
1238         (JSC::JIT::emit_op_dec):
1239         (JSC::JIT::emitSlow_op_dec):
1240         * jit/JITArithmetic32_64.cpp:
1241         (JSC::JIT::emit_op_inc):
1242         (JSC::JIT::emitSlow_op_inc):
1243         (JSC::JIT::emit_op_dec):
1244         (JSC::JIT::emitSlow_op_dec): Removed post_inc/dec, and updated for renames.
1245
1246         * jit/JITOpcodes.cpp:
1247         (JSC::JIT::emit_op_to_number):
1248         (JSC::JIT::emitSlow_op_to_number): Removed a test for number cells. There's
1249         no such thing!
1250
1251         * jit/JITOpcodes32_64.cpp:
1252         (JSC::JIT::emit_op_to_number): Use LowestTag to avoid making assumptions
1253         about the lowest valued tag.
1254
1255         (JSC::JIT::emitSlow_op_to_number): Updated for renames.
1256
1257         * jit/JITStubs.cpp:
1258         (JSC::DEFINE_STUB_FUNCTION):
1259         * jit/JITStubs.h:
1260         * llint/LLIntSlowPaths.cpp:
1261         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
1262         * llint/LLIntSlowPaths.h:
1263         * llint/LowLevelInterpreter32_64.asm:
1264         * llint/LowLevelInterpreter64.asm:
1265         * parser/NodeConstructors.h:
1266         (JSC::UnaryPlusNode::UnaryPlusNode): Removed post_inc/dec, and updated for renames.
1267
1268         * runtime/Operations.cpp:
1269         (JSC::jsIsObjectType): Removed a test for number cells. There's
1270         no such thing!
1271
1272 2013-04-27  Julien Brianceau  <jbrianceau@nds.com>
1273
1274         REGRESSION(r149114): cache flush for SH4 arch may flush an extra page.
1275         https://bugs.webkit.org/show_bug.cgi?id=115305
1276
1277         Reviewed by Andreas Kling.
1278
1279         * assembler/SH4Assembler.h:
1280         (JSC::SH4Assembler::cacheFlush):
1281
1282 2013-04-26  Geoffrey Garen  <ggaren@apple.com>
1283
1284         Re-landing <http://trac.webkit.org/changeset/148999>
1285
1286             Filled out more cases of branch folding in bytecode when emitting
1287             expressions into a branching context
1288             https://bugs.webkit.org/show_bug.cgi?id=115057
1289
1290             Reviewed by Phil Pizlo.
1291
1292         We can't fold the number == 1 case to boolean because all non-zero numbers
1293         down-cast to true, but only 1 is == to true.
1294
1295 2013-04-26  Filip Pizlo  <fpizlo@apple.com>
1296
1297         Correct indentation of SymbolTable.h
1298         
1299         Rubber stamped by Mark Hahnenberg.
1300
1301         * runtime/SymbolTable.h:
1302
1303 2013-04-26  Roger Fong  <roger_fong@apple.com>
1304
1305         Make Apple Windows VS2010 build results into and get dependencies from __32 suffixed folders.
1306         Make the DebugSuffix configuration use _debug dependencies.
1307
1308         * JavaScriptCore.vcxproj/JavaScriptCore.make:
1309         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
1310         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
1311         * JavaScriptCore.vcxproj/JavaScriptCoreCF.props:
1312         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
1313         * JavaScriptCore.vcxproj/JavaScriptCoreDebug.props:
1314         * JavaScriptCore.vcxproj/JavaScriptCoreDebugCFLite.props:
1315         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj:
1316         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGenerator.vcxproj.filters:
1317         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorBuildCmd.cmd:
1318         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
1319         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorDebug.props:
1320         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
1321         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPreBuild.cmd:
1322         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorProduction.props:
1323         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorRelease.props:
1324         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
1325         * JavaScriptCore.vcxproj/JavaScriptCoreGenerated.vcxproj:
1326         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedCommon.props:
1327         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedDebug.props:
1328         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedProduction.props:
1329         * JavaScriptCore.vcxproj/JavaScriptCoreGeneratedRelease.props:
1330         * JavaScriptCore.vcxproj/JavaScriptCorePostBuild.cmd:
1331         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
1332         * JavaScriptCore.vcxproj/JavaScriptCoreProduction.props:
1333         * JavaScriptCore.vcxproj/JavaScriptCoreRelease.props:
1334         * JavaScriptCore.vcxproj/JavaScriptCoreReleaseCFLite.props:
1335         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
1336         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.vcxproj:
1337         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.sh:
1338         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
1339         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.vcxproj:
1340         * JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.sh:
1341         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractor.vcxproj:
1342         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
1343         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorDebug.props:
1344         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorProduction.props:
1345         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorRelease.props:
1346         * JavaScriptCore.vcxproj/build-generated-files.sh:
1347         * JavaScriptCore.vcxproj/copy-files.cmd:
1348         * JavaScriptCore.vcxproj/jsc/jsc.vcxproj:
1349         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
1350         * JavaScriptCore.vcxproj/jsc/jscDebug.props:
1351         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
1352         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
1353         * JavaScriptCore.vcxproj/jsc/jscProduction.props:
1354         * JavaScriptCore.vcxproj/jsc/jscRelease.props:
1355         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj:
1356         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
1357         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
1358         * JavaScriptCore.vcxproj/testRegExp/testRegExpDebug.props:
1359         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
1360         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
1361         * JavaScriptCore.vcxproj/testRegExp/testRegExpProduction.props:
1362         * JavaScriptCore.vcxproj/testRegExp/testRegExpRelease.props:
1363         * JavaScriptCore.vcxproj/testapi/testapi.vcxproj:
1364         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
1365         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
1366         * JavaScriptCore.vcxproj/testapi/testapiDebug.props:
1367         * JavaScriptCore.vcxproj/testapi/testapiDebugCFLite.props:
1368         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
1369         * JavaScriptCore.vcxproj/testapi/testapiProduction.props:
1370         * JavaScriptCore.vcxproj/testapi/testapiRelease.props:
1371         * JavaScriptCore.vcxproj/testapi/testapiReleaseCFLite.props:
1372
1373 2013-04-26  Roger Fong  <roger_fong@apple.com>
1374
1375         Disable sub-pixel layout on mac.
1376         https://bugs.webkit.org/show_bug.cgi?id=114999.
1377
1378         Reviewed by Simon Fraser.
1379
1380         * Configurations/FeatureDefines.xcconfig:
1381
1382 2013-04-26  Oliver Hunt  <oliver@apple.com>
1383
1384         Make stack tracing more robust
1385         https://bugs.webkit.org/show_bug.cgi?id=115272
1386
1387         Reviewed by Geoffrey Garen.
1388
1389         CallFrame already handles stack walking confusion robustly,
1390         so we should make sure that the actual walk handles that as well.
1391
1392         * interpreter/Interpreter.cpp:
1393         (JSC::getCallerInfo):
1394
1395 2013-04-26  Mark Hahnenberg  <mhahnenberg@apple.com>
1396
1397         REGRESSION(r149165): It made many tests crash on 32 bit
1398         https://bugs.webkit.org/show_bug.cgi?id=115227
1399
1400         Reviewed by Csaba Osztrogonác.
1401
1402         m_reservation is uninitialized when ENABLE(SUPER_REGION) is false.
1403
1404         * heap/SuperRegion.cpp:
1405         (JSC::SuperRegion::~SuperRegion):
1406
1407 2013-04-26  Julien Brianceau  <jbrianceau@nds.com>
1408
1409         Fix SH4 build broken since r149159.
1410         https://bugs.webkit.org/show_bug.cgi?id=115229
1411
1412         Add BranchTruncateType enum in SH4 port and handle it in branchTruncateDoubleToInt32.
1413
1414         Reviewed by Allan Sandfeld Jensen.
1415
1416         * assembler/MacroAssemblerSH4.h:
1417         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
1418
1419 2013-04-25  Mark Hahnenberg  <mhahnenberg@apple.com>
1420
1421         SuperRegion doesn't call deallocate() on its PageReservation
1422         https://bugs.webkit.org/show_bug.cgi?id=115208
1423
1424         Reviewed by Geoffrey Garen.
1425
1426         It should. This doesn't cause us to leak physical memory, but it does cause us to leak virtual 
1427         address space (and probably mach ports), which is also bad :-( FixedVMPoolExecutableAllocator 
1428         also has this bug, but it doesn't matter much because there's only one instance of that class 
1429         throughout the entire lifetime of the process, whereas each VM has its own SuperRegion. 
1430
1431         * heap/SuperRegion.cpp:
1432         (JSC::SuperRegion::~SuperRegion):
1433         * heap/SuperRegion.h:
1434         (SuperRegion):
1435         * jit/ExecutableAllocatorFixedVMPool.cpp:
1436         (FixedVMPoolExecutableAllocator):
1437         (JSC::FixedVMPoolExecutableAllocator::~FixedVMPoolExecutableAllocator):
1438
1439 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
1440
1441         DFG doesn't support to_jsnumber
1442         https://bugs.webkit.org/show_bug.cgi?id=115129
1443
1444         Reviewed by Geoffrey Garen.
1445         
1446         Based on Oliver's patch. Implements to_jsnumber as Identity(Number:@thingy), and then does
1447         an optimization in Fixup to turn Identity(Number:) into Identity(Int32:) if the predictions
1448         tell us to. Identity is later turned into Phantom.
1449         
1450         Also fixed BackPropMask, which appeared to have NodeDoesNotExit included in it. That's
1451         wrong; NodeDoesNotExit is not a backward propagation property.
1452         
1453         Also fixed Identity to be marked as CanExit (i.e. not NodeDoesNotExit).
1454         
1455         This more than doubles the FPS on ammo.
1456
1457         * dfg/DFGByteCodeParser.cpp:
1458         (JSC::DFG::ByteCodeParser::parseBlock):
1459         * dfg/DFGCapabilities.h:
1460         (JSC::DFG::canCompileOpcode):
1461         * dfg/DFGFixupPhase.cpp:
1462         (JSC::DFG::FixupPhase::fixupNode):
1463         (FixupPhase):
1464         (JSC::DFG::FixupPhase::observeUseKindOnNode):
1465         (JSC::DFG::FixupPhase::observeUseKindOnEdge):
1466         * dfg/DFGNodeFlags.h:
1467         (DFG):
1468         * dfg/DFGNodeType.h:
1469         (DFG):
1470         * dfg/DFGPredictionPropagationPhase.cpp:
1471         (JSC::DFG::PredictionPropagationPhase::propagate):
1472
1473 2013-04-24  Oliver Hunt  <oliver@apple.com>
1474
1475         Add support for Math.imul
1476         https://bugs.webkit.org/show_bug.cgi?id=115143
1477
1478         Reviewed by Filip Pizlo.
1479
1480         Add support for Math.imul, a thunk generator for Math.imul,
1481         and an intrinsic.
1482
1483         Fairly self explanatory set of changes, DFG intrinsics simply
1484         leverages the existing ValueToInt32 nodes.
1485
1486         * create_hash_table:
1487         * dfg/DFGAbstractState.cpp:
1488         (JSC::DFG::AbstractState::executeEffects):
1489         * dfg/DFGBackwardsPropagationPhase.cpp:
1490         (JSC::DFG::BackwardsPropagationPhase::propagate):
1491         * dfg/DFGByteCodeParser.cpp:
1492         (JSC::DFG::ByteCodeParser::handleIntrinsic):
1493         * dfg/DFGCSEPhase.cpp:
1494         (JSC::DFG::CSEPhase::performNodeCSE):
1495         * dfg/DFGFixupPhase.cpp:
1496         (JSC::DFG::FixupPhase::fixupNode):
1497         * dfg/DFGNodeType.h:
1498         (DFG):
1499         * dfg/DFGPredictionPropagationPhase.cpp:
1500         (JSC::DFG::PredictionPropagationPhase::propagate):
1501         * dfg/DFGSpeculativeJIT.cpp:
1502         (JSC::DFG::SpeculativeJIT::compileArithIMul):
1503         * dfg/DFGSpeculativeJIT.h:
1504         (SpeculativeJIT):
1505         * dfg/DFGSpeculativeJIT32_64.cpp:
1506         (JSC::DFG::SpeculativeJIT::compile):
1507         * dfg/DFGSpeculativeJIT64.cpp:
1508         (JSC::DFG::SpeculativeJIT::compile):
1509         * jit/ThunkGenerators.cpp:
1510         (JSC::imulThunkGenerator):
1511         (JSC):
1512         * jit/ThunkGenerators.h:
1513         (JSC):
1514         * runtime/Intrinsic.h:
1515         * runtime/MathObject.cpp:
1516         (JSC):
1517         (JSC::mathProtoFuncIMul):
1518         * runtime/VM.cpp:
1519         (JSC::thunkGeneratorForIntrinsic):
1520
1521 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
1522
1523         Unreviewed, roll out http://trac.webkit.org/changeset/148999
1524         It broke http://kripken.github.io/ammo.js/examples/new/ammo.html
1525
1526         * JavaScriptCore.order:
1527         * bytecompiler/BytecodeGenerator.cpp:
1528         (JSC::BytecodeGenerator::emitNewArray):
1529         (JSC::BytecodeGenerator::emitThrowReferenceError):
1530         (JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
1531         * bytecompiler/BytecodeGenerator.h:
1532         (JSC::BytecodeGenerator::shouldEmitProfileHooks):
1533         (BytecodeGenerator):
1534         * bytecompiler/NodesCodegen.cpp:
1535         (JSC):
1536         (JSC::NullNode::emitBytecode):
1537         (JSC::BooleanNode::emitBytecode):
1538         (JSC::NumberNode::emitBytecode):
1539         (JSC::StringNode::emitBytecode):
1540         (JSC::IfNode::emitBytecode):
1541         (JSC::IfElseNode::emitBytecode):
1542         * parser/ASTBuilder.h:
1543         (JSC::ASTBuilder::createIfStatement):
1544         (ASTBuilder):
1545         * parser/NodeConstructors.h:
1546         (JSC):
1547         (JSC::NullNode::NullNode):
1548         (JSC::BooleanNode::BooleanNode):
1549         (JSC::NumberNode::NumberNode):
1550         (JSC::StringNode::StringNode):
1551         (JSC::IfNode::IfNode):
1552         (JSC::IfElseNode::IfElseNode):
1553         * parser/Nodes.h:
1554         (JSC::ExpressionNode::isPure):
1555         (JSC::ExpressionNode::isSubtract):
1556         (StatementNode):
1557         (NullNode):
1558         (JSC::NullNode::isNull):
1559         (BooleanNode):
1560         (JSC::BooleanNode::isPure):
1561         (NumberNode):
1562         (JSC::NumberNode::value):
1563         (JSC::NumberNode::isPure):
1564         (StringNode):
1565         (JSC::StringNode::isPure):
1566         (JSC::StringNode::isString):
1567         (BinaryOpNode):
1568         (IfNode):
1569         (JSC):
1570         (IfElseNode):
1571         (ContinueNode):
1572         (BreakNode):
1573         * parser/Parser.cpp:
1574         (JSC::::parseIfStatement):
1575         * parser/ResultType.h:
1576         (ResultType):
1577         * runtime/JSCJSValueInlines.h:
1578         (JSC::JSValue::pureToBoolean):
1579         * runtime/JSCell.h:
1580         (JSCell):
1581         * runtime/JSCellInlines.h:
1582         (JSC):
1583
1584 2013-04-25  Filip Pizlo  <fpizlo@apple.com>
1585
1586         PreciseJumpTargets should treat loop_hint as a jump target
1587         https://bugs.webkit.org/show_bug.cgi?id=115209
1588
1589         Reviewed by Mark Hahnenberg.
1590         
1591         I didn't add a test but I turned this into a release assertion. Running Octane is enough
1592         to trigger it.
1593
1594         * bytecode/PreciseJumpTargets.cpp:
1595         (JSC::computePreciseJumpTargets):
1596         * dfg/DFGByteCodeParser.cpp:
1597         (JSC::DFG::ByteCodeParser::parseBlock):
1598
1599 2013-04-25  Roman Zhuykov  <zhroma@ispras.ru>
1600
1601         Fix problems with processing negative zero on DFG.
1602         https://bugs.webkit.org/show_bug.cgi?id=113862
1603
1604         Reviewed by Filip Pizlo.
1605
1606         Fix NodeNeedsNegZero flag propagation in BackwardPropagationPhase.
1607         Function arithNodeFlags should not mask NodeNeedsNegZero flag for ArithNegate and DoubleAsInt32
1608         nodes and this flag should be always used to decide where we need to generate nezative-zero checks.
1609         Remove unnecessary negative-zero checks from integer ArithDiv on ARM.
1610         Also remove such checks from integer ArithMod on ARM and X86, and make them always to
1611         check not only "modulo_result == 0" but also "dividend < 0".
1612         Generate faster code for case when ArithMod operation divisor is constant power of 2 on ARMv7
1613         in the same way as on ARMv7s, and add negative-zero checks into this code when needed.
1614         Change speculationCheck ExitKind from Overflow to NegativeZero where applicable.
1615  
1616         This shows 30% speedup of math-spectral-norm, and 5% speedup
1617         on SunSpider overall on ARMv7 Linux.
1618
1619         * assembler/MacroAssemblerARM.h:
1620         (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
1621         * assembler/MacroAssemblerARMv7.h:
1622         (JSC::MacroAssemblerARMv7::branchConvertDoubleToInt32):
1623         * assembler/MacroAssemblerMIPS.h:
1624         (JSC::MacroAssemblerMIPS::branchConvertDoubleToInt32):
1625         * assembler/MacroAssemblerSH4.h:
1626         (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
1627         * assembler/MacroAssemblerX86Common.h:
1628         (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
1629         * dfg/DFGBackwardsPropagationPhase.cpp:
1630         (JSC::DFG::BackwardsPropagationPhase::isNotNegZero):
1631         (JSC::DFG::BackwardsPropagationPhase::isNotPosZero):
1632         (JSC::DFG::BackwardsPropagationPhase::propagate):
1633         * dfg/DFGNode.h:
1634         (JSC::DFG::Node::arithNodeFlags):
1635         * dfg/DFGSpeculativeJIT.cpp:
1636         (JSC::DFG::SpeculativeJIT::compileDoubleAsInt32):
1637         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1638         (JSC::DFG::SpeculativeJIT::compileArithNegate):
1639
1640 2013-04-25  Oliver Hunt  <oliver@apple.com>
1641
1642         Stack guards are too conservative
1643         https://bugs.webkit.org/show_bug.cgi?id=115147
1644
1645         Reviewed by Mark Hahnenberg.
1646
1647         Increase stack guard to closer to old size.
1648
1649         * interpreter/Interpreter.cpp:
1650         (JSC::Interpreter::StackPolicy::StackPolicy):
1651
1652 2013-04-25  Oliver Hunt  <oliver@apple.com>
1653
1654         Stack guards are too conservative
1655         https://bugs.webkit.org/show_bug.cgi?id=115147
1656
1657         Reviewed by Geoffrey Garen.
1658
1659         Reduce the limits and simplify the decision making.
1660
1661         * interpreter/Interpreter.cpp:
1662         (JSC::Interpreter::StackPolicy::StackPolicy):
1663
1664 2013-04-25  Nick Diego Yamane  <nick.yamane@openbossa.org>
1665
1666         JSC: Fix interpreter misbehavior in builds with JIT disabled
1667         https://bugs.webkit.org/show_bug.cgi?id=115190
1668
1669         Reviewed by Oliver Hunt.
1670
1671         Commit http://trac.webkit.org/changeset/147858 modified
1672         some details on how JS stack traces are built. The method
1673         "getLineNumberForCallFrame", renamed in that changeset to
1674         "getBytecodeOffsetForCallFrame" is always returning `0' when
1675         JIT is disabled
1676
1677         How to reproduce:
1678          - Build webkit with JIT disabled
1679          - Open MiniBrowser, for example, with http://google.com
1680          - In a debug build, WebProcess will hit the following ASSERT:
1681            Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp:279 ASSERT(low);
1682
1683         * interpreter/Interpreter.cpp:
1684         (JSC::getBytecodeOffsetForCallFrame):
1685
1686 2013-04-25  Oliver Hunt  <oliver@apple.com>
1687
1688         Make checkSyntax take a VM instead of an ExecState
1689
1690         RS=Tim
1691
1692         * jsc.cpp:
1693         (runInteractive):
1694         * runtime/Completion.cpp:
1695         (JSC::checkSyntax):
1696         * runtime/Completion.h:
1697         (JSC):
1698
1699 2013-04-25  Michael Saboff  <msaboff@apple.com>
1700
1701         32 Bit: Crash due to RegExpTest nodes not setting result type to Boolean
1702         https://bugs.webkit.org/show_bug.cgi?id=115188
1703
1704         Reviewed by Geoffrey Garen.
1705
1706         Changed the RegExpTest node to set the AbstractValue to boolean, since that
1707         what it is.
1708
1709         * dfg/DFGAbstractState.cpp:
1710         (JSC::DFG::AbstractState::executeEffects):
1711
1712 2013-04-25  Julien Brianceau  <jbrianceau@nds.com>
1713
1714         REGRESSION(r137994): Random crashes occur with SH4 JSC.
1715         https://bugs.webkit.org/show_bug.cgi?id=115167.
1716
1717         Reviewed by Oliver Hunt.
1718
1719         Since r137994, uncommited pages could be inside the area of memory in
1720         parameter of the cacheFlush function. That's why we have to flush each
1721         page separately to avoid a fail of the whole flush, if an uncommited page
1722         is in the area.
1723
1724         This patch is very similar to changeset 145194 made for ARMv7 architecture,
1725         see https://bugs.webkit.org/show_bug.cgi?id=111441 for further information.
1726
1727         * assembler/SH4Assembler.h:
1728         (JSC::SH4Assembler::cacheFlush):
1729
1730 2013-04-24  Mark Lam  <mark.lam@apple.com>
1731
1732         Add watchdog timer polling for the DFG.
1733         https://bugs.webkit.org/show_bug.cgi?id=115134.
1734
1735         Reviewed by Geoffrey Garen.
1736
1737         The strategy is to add a speculation check to the DFG generated code to
1738         test if the watchdog timer has fired or not. If the watchdog timer has
1739         fired, the generated code will do an OSR exit to the baseline JIT, and
1740         let it handle servicing the watchdog timer.
1741
1742         If the watchdog is not enabled, this speculation check will not be
1743         emitted.
1744
1745         * API/tests/testapi.c:
1746         (currentCPUTime_callAsFunction):
1747         (extendTerminateCallback):
1748         (main):
1749         - removed try/catch statements so that we can test the watchdog on the DFG.
1750         - added JS bindings to a native currentCPUTime() function so that the timeout
1751           tests can be more accurate.
1752         - also shortened the time values so that the tests can complete sooner.
1753
1754         * bytecode/ExitKind.h:
1755         * dfg/DFGAbstractState.cpp:
1756         (JSC::DFG::AbstractState::executeEffects):
1757         * dfg/DFGByteCodeParser.cpp:
1758         (JSC::DFG::ByteCodeParser::parseBlock):
1759         * dfg/DFGFixupPhase.cpp:
1760         (JSC::DFG::FixupPhase::fixupNode):
1761         * dfg/DFGNodeType.h:
1762         * dfg/DFGPredictionPropagationPhase.cpp:
1763         (JSC::DFG::PredictionPropagationPhase::propagate):
1764         * dfg/DFGSpeculativeJIT32_64.cpp:
1765         (JSC::DFG::SpeculativeJIT::compile):
1766         * dfg/DFGSpeculativeJIT64.cpp:
1767         (JSC::DFG::SpeculativeJIT::compile):
1768         * runtime/Watchdog.cpp:
1769         (JSC::Watchdog::setTimeLimit):
1770
1771 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
1772
1773         Special thunks for math functions should work on ARMv7
1774         https://bugs.webkit.org/show_bug.cgi?id=115144
1775
1776         Reviewed by Gavin Barraclough and Oliver Hunt.
1777         
1778         The only hard bit here was ensuring that we implemented the very special
1779         "cheap C call" convention on ARMv7.
1780
1781         * assembler/AbstractMacroAssembler.h:
1782         (JSC::isARMv7s):
1783         (JSC):
1784         (JSC::isX86):
1785         * dfg/DFGCommon.h:
1786         * jit/SpecializedThunkJIT.h:
1787         (SpecializedThunkJIT):
1788         (JSC::SpecializedThunkJIT::callDoubleToDoublePreservingReturn):
1789         * jit/ThunkGenerators.cpp:
1790         (JSC::floorThunkGenerator):
1791         (JSC::ceilThunkGenerator):
1792         (JSC::roundThunkGenerator):
1793         (JSC::expThunkGenerator):
1794         (JSC::logThunkGenerator):
1795
1796 2013-04-24  Julien Brianceau  <jbrianceau@nds.com>
1797
1798         Misc bugfix and cleaning in sh4 base JIT.
1799         https://bugs.webkit.org/show_bug.cgi?id=115022.
1800
1801         Reviewed by Oliver Hunt.
1802
1803         Remove unused add32() and sub32() with scratchreg parameter to avoid
1804         confusion as this function prototype means another behaviour.
1805         Remove unused "void push(Address)" function which seems quite buggy.
1806
1807         * assembler/MacroAssemblerSH4.h:
1808         (JSC::MacroAssemblerSH4::and32): Cosmetic change.
1809         (JSC::MacroAssemblerSH4::lshift32): Cosmetic change.
1810         (JSC::MacroAssemblerSH4::or32): Cosmetic change.
1811         (JSC::MacroAssemblerSH4::xor32): Cosmetic change.
1812         (MacroAssemblerSH4):
1813         (JSC::MacroAssemblerSH4::load32): Cosmetic change.
1814         (JSC::MacroAssemblerSH4::load8Signed): Fix invalid offset upper limit
1815         when using r0 register and cosmetic changes.
1816         (JSC::MacroAssemblerSH4::load8): Reuse load8Signed to avoid duplication.
1817         (JSC::MacroAssemblerSH4::load16): Fix invalid offset upper limit when
1818         using r0 register, fix missing offset shift and cosmetic changes.
1819         (JSC::MacroAssemblerSH4::store32): Cosmetic change.
1820         (JSC::MacroAssemblerSH4::branchAdd32): Store result value before branch.
1821
1822 2013-04-24  Patrick Gansterer  <paroga@webkit.org>
1823
1824         [WIN] Remove pthread from Visual Studio files in JavaScriptCore
1825         https://bugs.webkit.org/show_bug.cgi?id=114864
1826
1827         Reviewed by Brent Fulgham.
1828
1829         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
1830         * JavaScriptCore.vcproj/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.vsprops:
1831         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
1832         * JavaScriptCore.vcproj/testRegExp/testRegExpCommon.vsprops:
1833         * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops:
1834         * JavaScriptCore.vcxproj/JavaScriptCoreCommon.props:
1835         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorCommon.props:
1836         * JavaScriptCore.vcxproj/LLInt/LLIntOffsetsExtractor/LLIntOffsetsExtractorCommon.props:
1837         * JavaScriptCore.vcxproj/jsc/jscCommon.props:
1838         * JavaScriptCore.vcxproj/testRegExp/testRegExpCommon.props:
1839         * JavaScriptCore.vcxproj/testapi/testapiCommon.props:
1840         * JavaScriptCore.vcxproj/testapi/testapiCommonCFLite.props:
1841
1842 2013-04-24  Filip Pizlo  <fpizlo@apple.com>
1843
1844         DFG should keep the operand to create_this alive if it's emitting code for create_this
1845         https://bugs.webkit.org/show_bug.cgi?id=115133
1846
1847         Reviewed by Mark Hahnenberg.
1848         
1849         The DFG must model bytecode liveness, or else OSR exit is going to have a really bad time.
1850
1851         * dfg/DFGByteCodeParser.cpp:
1852         (JSC::DFG::ByteCodeParser::parseBlock):
1853
1854 2013-04-24  Roger Fong  <roger_fong@apple.com>
1855
1856         Have VS2010 WebKit solution look in WebKit_Libraries/lib32 for dependencies.
1857
1858         * JavaScriptCore.vcxproj/JavaScriptCoreExportGenerator/JavaScriptCoreExportGeneratorPostBuild.cmd:
1859         * JavaScriptCore.vcxproj/JavaScriptCorePreLink.cmd:
1860         * JavaScriptCore.vcxproj/jsc/jscPostBuild.cmd:
1861         * JavaScriptCore.vcxproj/jsc/jscPreLink.cmd:
1862         * JavaScriptCore.vcxproj/testRegExp/testRegExp.vcxproj.filters:
1863         * JavaScriptCore.vcxproj/testRegExp/testRegExpPostBuild.cmd:
1864         * JavaScriptCore.vcxproj/testRegExp/testRegExpPreLink.cmd:
1865         * JavaScriptCore.vcxproj/testapi/testapiPreLink.cmd:
1866
1867 2013-04-24  Geoffrey Garen  <ggaren@apple.com>
1868
1869         32-bit build fix.
1870
1871         Unreviewed.
1872
1873         * dfg/DFGSpeculativeJIT.cpp:
1874         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch): Explicitly
1875         truncate to 32-bit to avoid compiler warnings. It's safe to truncate
1876         because the payload of a boolean is the low bits on both 64-bit and 32-bit.
1877
1878 2013-04-23  Geoffrey Garen  <ggaren@apple.com>
1879
1880         Filled out more cases of branch folding in the DFG
1881         https://bugs.webkit.org/show_bug.cgi?id=115088
1882
1883         Reviewed by Oliver Hunt.
1884
1885         No change on the benchmarks we track, but a 3X speedup on a
1886         microbenchmark that uses these techniques.
1887
1888         * dfg/DFGByteCodeParser.cpp:
1889         (JSC::DFG::ByteCodeParser::parseBlock): (!/=)= and (!/=)== can constant
1890         fold all types, not just numbers, because true constants have no
1891         side effects when type-converted at runtime.
1892
1893         * dfg/DFGFixupPhase.cpp:
1894         (JSC::DFG::FixupPhase::fixupNode):
1895         * dfg/DFGNode.h:
1896         (JSC::DFG::Node::shouldSpeculateBoolean): Added support for fixing up
1897         boolean uses, like we do for other types like number.
1898
1899         * dfg/DFGSpeculativeJIT.cpp:
1900         (JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):
1901         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
1902         (JSC::DFG::SpeculativeJIT::compare):
1903         (JSC::DFG::SpeculativeJIT::compileStrictEq):
1904         (JSC::DFG::SpeculativeJIT::compileBooleanCompare): Peephole fuse
1905         boolean compare and/or compare-branch, now that we have the types for
1906         them.
1907
1908         * dfg/DFGSpeculativeJIT.h: Updated declarations.
1909
1910 == Rolled over to ChangeLog-2013-04-24 ==