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