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