aca52c05ec2e0d667671a5f0d44fc405c249fb60
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2012-04-10  Patrick Gansterer  <paroga@webkit.org>
2
3         [CMake] Enable USE_FOLDERS property
4         https://bugs.webkit.org/show_bug.cgi?id=83571
5
6         Reviewed by Daniel Bates.
7
8         Setting the FOLDER property on targets gives more structure 
9         to the generated Visual Studio solutions.
10         This does not affect other CMake generators.
11
12         * CMakeLists.txt:
13         * shell/CMakeLists.txt:
14
15 2012-04-10  Filip Pizlo  <fpizlo@apple.com>
16
17         It should be possible to see why a code block was not compiled by the DFG
18         https://bugs.webkit.org/show_bug.cgi?id=83553
19
20         Reviewed by Geoff Garen.
21         
22         If DFG_ENABLE(DEBUG_VERBOSE) and a code block is rejected, then print the
23         opcode that caused the rejection.
24
25         * dfg/DFGCapabilities.cpp:
26         (JSC::DFG::debugFail):
27         (DFG):
28         (JSC::DFG::canHandleOpcodes):
29
30 2012-04-09  Gavin Barraclough  <barraclough@apple.com>
31
32         If a callback constructor returns a C++ null, throw a type error.
33         https://bugs.webkit.org/show_bug.cgi?id=83537
34
35         Rubber Stamped by Geoff Garen.
36
37         * API/JSCallbackConstructor.cpp:
38         (JSC::constructJSCallback):
39             - If a callback constructor returns a C++ null, throw a type error.
40         * API/tests/testapi.c:
41         (Base_returnHardNull):
42         * API/tests/testapi.js:
43             - Add a test case for callback constructors that return a C++ null.
44
45 2012-04-09  Gavin Barraclough  <barraclough@apple.com>
46
47         If a callback function returns a C++ null, convert to undefined.
48         https://bugs.webkit.org/show_bug.cgi?id=83534
49
50         Reviewed by Geoff Garen.
51
52         * API/JSCallbackFunction.cpp:
53             - If a callback function returns a C++ null, convert to undefined.
54         (JSC::JSCallbackFunction::call):
55         * API/tests/testapi.c:
56         (Base_returnHardNull):
57         * API/tests/testapi.js:
58             - Add a test case for callback functions that return a C++ null.
59
60 2012-04-09  Filip Pizlo  <fpizlo@apple.com>
61
62         Classic interpreter's GC hooks shouldn't attempt to scan instructions for code blocks that
63         are currently being generated
64         https://bugs.webkit.org/show_bug.cgi?id=83531
65         <rdar://problem/11215200>
66
67         Reviewed by Gavin Barraclough.
68
69         * bytecode/CodeBlock.cpp:
70         (JSC::CodeBlock::stronglyVisitStrongReferences):
71
72 2012-04-09  Filip Pizlo  <fpizlo@apple.com>
73
74         Unreviewed, modernize and clean up uses of ARM assembly mnemonics in inline asm blocks.
75
76         * dfg/DFGOperations.cpp:
77         (JSC):
78         * offlineasm/armv7.rb:
79
80 2012-04-09  Patrick Gansterer  <paroga@webkit.org>
81
82         Remove HAVE_STDINT_H
83         https://bugs.webkit.org/show_bug.cgi?id=83434
84
85         Reviewed by Kentaro Hara.
86
87         HAVE_STDINT_H is defined with 1 all the time and we us stdint.h without HAVE(STDINT_H) already.
88
89         * config.h:
90
91 2012-04-08  Filip Pizlo  <fpizlo@apple.com>
92
93         DFG should not load the property storage if it is inline.
94         https://bugs.webkit.org/show_bug.cgi?id=83455
95
96         Reviewed by Gavin Barraclough.
97         
98         We had previously decided to have all property storage accesses go through
99         the property storage pointer even if they don't "really" have to, because
100         we were thinking this would help GC barriers somehow. Well, we never ended
101         up doing anything with that. Hence, doing these wasted loads of the
102         property storage pointer when the storage is inline is just a waste of CPU
103         cycles.
104         
105         This change makes the DFG's inline property accesses (GetByOffset and
106         PutByOffset) go directly to the inline property storage if the structure(s)
107         tell us that it's OK.
108         
109         This looks like an across-the-board 1% win.
110
111         * bytecode/StructureSet.h:
112         (JSC):
113         (JSC::StructureSet::allAreUsingInlinePropertyStorage):
114         (StructureSet):
115         * dfg/DFGByteCodeParser.cpp:
116         (JSC::DFG::ByteCodeParser::parseBlock):
117         * dfg/DFGSpeculativeJIT.cpp:
118         (JSC::DFG::SpeculativeJIT::fillStorage):
119
120 2012-04-08  Filip Pizlo  <fpizlo@apple.com>
121
122         Command-line jsc's exception handling should be rationalized
123         https://bugs.webkit.org/show_bug.cgi?id=83437
124
125         Reviewed by Dan Bernstein.
126         
127         - If an exception is thrown during run() execution, it is now propagated,
128           so that it will terminate program execution unless it is caught.
129           
130         - If program execution terminates with an exception, the exception is now
131           always printed.
132           
133         - When printing the exception, the backtrace is now also printed if one is
134           available. It will only not be available if you use something akin to my
135           favorite line of code, 'throw "error"', since primitives don't have
136           properties and hence we cannot attach a "stack" property to them.
137
138         * jsc.cpp:
139         (functionRun):
140         (runWithScripts):
141
142 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
143
144         Forced OSR exits should lead to recompilation based on count, not rate
145         https://bugs.webkit.org/show_bug.cgi?id=83247
146         <rdar://problem/10720925>
147
148         Reviewed by Geoff Garen.
149         
150         Track which OSR exits happen because of inadequate coverage. Count them
151         separately. If the count reaches a threshold, immediately trigger
152         reoptimization.
153         
154         This is in contrast to the recompilation trigger for all other OSR exits.
155         Normally recomp is triggered when the exit rate exceeds a certain ratio.
156         
157         Looks like a slight V8 speedup (sub 1%).
158
159         * bytecode/CodeBlock.cpp:
160         (JSC::CodeBlock::CodeBlock):
161         * bytecode/CodeBlock.h:
162         (JSC::CodeBlock::forcedOSRExitCounter):
163         (JSC::CodeBlock::addressOfForcedOSRExitCounter):
164         (JSC::CodeBlock::offsetOfForcedOSRExitCounter):
165         (JSC::CodeBlock::shouldReoptimizeNow):
166         (JSC::CodeBlock::shouldReoptimizeFromLoopNow):
167         (CodeBlock):
168         * bytecode/DFGExitProfile.h:
169         (JSC::DFG::exitKindToString):
170         * dfg/DFGOSRExitCompiler.cpp:
171         (JSC::DFG::OSRExitCompiler::handleExitCounts):
172         (DFG):
173         * dfg/DFGOSRExitCompiler.h:
174         (OSRExitCompiler):
175         * dfg/DFGOSRExitCompiler32_64.cpp:
176         (JSC::DFG::OSRExitCompiler::compileExit):
177         * dfg/DFGOSRExitCompiler64.cpp:
178         (JSC::DFG::OSRExitCompiler::compileExit):
179         * dfg/DFGOperations.cpp:
180         * dfg/DFGSpeculativeJIT.cpp:
181         (JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
182         * dfg/DFGSpeculativeJIT32_64.cpp:
183         (JSC::DFG::SpeculativeJIT::compile):
184         * dfg/DFGSpeculativeJIT64.cpp:
185         (JSC::DFG::SpeculativeJIT::compile):
186         * runtime/Options.cpp:
187         (Options):
188         (JSC::Options::initializeOptions):
189         * runtime/Options.h:
190         (Options):
191
192 2012-04-06  Benjamin Poulain  <bpoulain@apple.com>
193
194         Do not abuse ArrayStorage's m_length for testing array consistency
195         https://bugs.webkit.org/show_bug.cgi?id=83403
196
197         Reviewed by Geoffrey Garen.
198
199         Array creation from a list of values is a 3 steps process:
200         -JSArray::tryCreateUninitialized()
201         -JSArray::initializeIndex() for each values
202         -JSArray::completeInitialization()
203
204         Previously, the attribute m_length was not set to the final size
205         JSArray::tryCreateUninitialized() because it was used to test the array
206         consistency JSArray::initializeIndex().
207
208         This caused the initialization loop using JSArray::initializeIndex() maintain
209         two counters:
210         -index of the loop
211         -storage->m_length++
212
213         This patch fixes this by using the index of the initialization loop for the indinces of
214         JSArray::initializeIndex(). For testing consistency, the variable m_initializationIndex
215         is introduced if CHECK_ARRAY_CONSISTENCY is defined.
216
217         The patch also fixes minor unrelated build issue when CHECK_ARRAY_CONSISTENCY is defined.
218
219         This improves the performance of JSArray creation from literals by 8%.
220
221         * runtime/JSArray.cpp:
222         (JSC::JSArray::tryFinishCreationUninitialized):
223         (JSC::JSArray::checkConsistency):
224         * runtime/JSArray.h:
225         (ArrayStorage):
226         (JSC::JSArray::initializeIndex):
227         (JSC::JSArray::completeInitialization):
228
229 2012-04-06  Jon Lee  <jonlee@apple.com>
230
231         Build fix for Windows bots.
232
233         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: export missing symbol.
234
235 2012-04-06  Geoffrey Garen  <ggaren@apple.com>
236
237         Renamed
238
239                 WeakHeap => WeakSet
240                 HandleHeap => HandleSet
241
242         Reviewed by Sam Weinig.
243
244         These sets do have internal allocators, but it's confusing to call them
245         heaps because they're sub-objects of an object called "heap".
246
247         * heap/HandleHeap.cpp: Removed.
248         * heap/HandleHeap.h: Removed.
249         * heap/HandleSet.cpp: Copied from JavaScriptCore/heap/HandleHeap.cpp.
250         * heap/WeakHeap.cpp: Removed.
251         * heap/WeakHeap.h: Removed.
252         * heap/WeakSet.cpp: Copied from JavaScriptCore/heap/WeakHeap.cpp.
253         * heap/WeakSet.h: Copied from JavaScriptCore/heap/WeakHeap.h.
254
255         Plus global rename using grep.
256
257 2012-04-06  Dan Bernstein  <mitz@apple.com>
258
259         <rdar://problem/10912476> HiDPI: Have canvas use a hidpi backing store, but downsample upon access
260
261         Reviewed by Sam Weinig.
262
263         * Configurations/FeatureDefines.xcconfig: Added ENABLE_HIGH_DPI_CANVAS.
264
265 2012-04-06  Rob Buis  <rbuis@rim.com>
266
267         Fix cast-align warnings in JSC
268         https://bugs.webkit.org/show_bug.cgi?id=80790
269
270         Reviewed by George Staikos.
271
272         * assembler/ARMv7Assembler.h:
273         (JSC::ARMv7Assembler::computeJumpType):
274         (JSC::ARMv7Assembler::link):
275         * assembler/LinkBuffer.h:
276         (JSC::LinkBuffer::linkCode):
277         * heap/MarkStack.cpp:
278         (JSC::SlotVisitor::copyAndAppend):
279         * runtime/JSArray.cpp:
280         (JSC::JSArray::visitChildren):
281         * wtf/RefCountedArray.h:
282         (WTF::RefCountedArray::Header::payload):
283
284 2012-04-06  Darin Adler  <darin@apple.com>
285
286         Streamline strtod and fix some related problems
287         https://bugs.webkit.org/show_bug.cgi?id=82857
288
289         Reviewed by Geoffrey Garen.
290
291         * parser/Lexer.cpp:
292         (JSC::Lexer<>::lex): Use parseDouble. Since we have already scanned the number
293         and we know it has only correct characters, leading spaces, trailing junk, and
294         trailing spaces are not a possibility. No need to add a trailing null character.
295
296         * runtime/JSGlobalObjectFunctions.cpp:
297         (JSC::parseInt): Changed overflow based 10 case to use parseDouble. No need
298         to allow trailing junk since the code above already allows only numeric digits
299         in the string. This code path is used only in unusual cases, so it's not
300         optimized for 8-bit strings, but easily could be.
301         (JSC::jsStrDecimalLiteral): Removed the allow trailing junk argument to this
302         function template because all the callers are OK with trailing junk. Use the
303         parseDouble function. No need to copy the data into a byte buffer, because
304         parseDouble handles that.
305         (JSC::toDouble): Got rid of the DisallowTrailingJunk argument to the
306         jsStrDecimalLiteral function template. That's OK because this function
307         already checks for trailing junk and handles it appropriately. The old code
308         path was doing it twice.
309         (JSC::parseFloat): Got rid of the AllowTrailingJunk argument to the
310         jsStrDecimalLiteral function template; the template allows junk unconditionally.
311
312         * runtime/LiteralParser.cpp:
313         (JSC::::Lexer::lexNumber): Use parseDouble. Since we have already scanned the number
314         and we know it has only correct characters, leading spaces, trailing junk, and
315         trailing spaces are not a possibility. No need to add a trailing null character.
316         No need to copy the data into a byte buffer, because parseDouble handles that.
317         We could optimize the UChar case even more because we know all the characters
318         are ASCII, but not doing that at this time.
319
320         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated.
321
322 2012-04-06  Patrick Gansterer  <paroga@webkit.org>
323
324         Remove JSC dependency from GregorianDateTime
325         https://bugs.webkit.org/show_bug.cgi?id=83290
326
327         Reviewed by Geoffrey Garen.
328
329         This allows us to move it to WTF later.
330
331         * runtime/DateConstructor.cpp:
332         (JSC::callDate):
333         * runtime/JSDateMath.h:
334
335 2012-04-05  Michael Saboff  <msaboff@apple.com>
336
337         Call Heap::discardAllCompiledCode() in low memory situations
338         https://bugs.webkit.org/show_bug.cgi?id=83335
339
340         Reviewed by Geoffrey Garen.
341
342         Restructured Heap::discardAllCompiledCode() to do the "Is JavaScriptRunning?"
343         check inline so that it can be called directly without this check.
344
345         * heap/Heap.cpp:
346         (JSC::Heap::discardAllCompiledCode):
347         (JSC::Heap::collectAllGarbage):
348         * heap/Heap.h: Added JS_EXPORT_PRIVATE to discardAllCompiledCode() so it can be
349         called from WebCore.
350         (Heap):
351         * runtime/JSGlobalData.h: Removed unused " void discardAllCompiledCode()" declaration.
352         (JSGlobalData):
353
354 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
355
356         Speed up the conversion from JSValue to String for bulk operations
357         https://bugs.webkit.org/show_bug.cgi?id=83243
358
359         Reviewed by Geoffrey Garen.
360
361         When making operations on primitive types, we loose some time converting
362         values to JSString in order to extract the string.
363
364         This patch speeds up some basic Array operations by avoiding the creation
365         of intermediary JSString when possible.
366
367         For the cases where we need to convert a lot of JSValue in a tight loop,
368         an inline conversion is used.
369
370         * runtime/ArrayPrototype.cpp:
371         (JSC::arrayProtoFuncToString):
372         (JSC::arrayProtoFuncToLocaleString):
373         (JSC::arrayProtoFuncJoin):
374         (JSC::arrayProtoFuncPush):
375         (JSC::arrayProtoFuncSort):
376         * runtime/CommonIdentifiers.h:
377         * runtime/JSArray.cpp:
378         (JSC::JSArray::sort):
379         * runtime/JSString.h:
380         (JSC::JSValue::toUString):
381         (JSC):
382         (JSC::inlineJSValueNotStringtoUString):
383         (JSC::JSValue::toUStringInline):
384         * runtime/JSValue.cpp:
385         (JSC::JSValue::toUStringSlowCase):
386         (JSC):
387         * runtime/JSValue.h:
388         (JSValue):
389
390 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
391
392         Use QuickSort when sorting primitive values by string representation
393         https://bugs.webkit.org/show_bug.cgi?id=83312
394
395         Reviewed by Gavin Barraclough.
396
397         When the value we are sorting are all primitive values, we do not need to
398         ensure a stable sort as two values with equal string representation are
399         indistinguishable from JavaScript.
400
401         This gives about 16% performance increase when sorting primitive values.
402
403         * runtime/JSArray.cpp:
404         (JSC::JSArray::sort):
405
406 2012-04-05  Oliver Hunt  <oliver@apple.com>
407
408         SIGILL in JavaScriptCore on a Geode processor
409         https://bugs.webkit.org/show_bug.cgi?id=82496
410
411         Reviewed by Gavin Barraclough.
412
413         Don't attempt to use the DFG when SSE2 is not available.
414
415         * dfg/DFGCapabilities.cpp:
416         (JSC::DFG::canCompileOpcodes):
417
418 2012-04-05  Oliver Hunt  <oliver@apple.com>
419
420         Fix 32-bit build.
421
422         * API/APICast.h:
423         (toJS):
424
425 2012-04-05  Oliver Hunt  <oliver@apple.com>
426
427         Replace static_cast with jsCast when casting JSCell subclasses in JSC
428         https://bugs.webkit.org/show_bug.cgi?id=83307
429
430         Reviewed by Gavin Barraclough.
431
432         Replace all usage of static_cast<JSCell subtype*> with jsCast<> in JavaScriptCore.
433         This results in assertions when unsafe casts are performed, but simply leaves
434         a static_cast<> in release builds.
435
436         * API/APICast.h:
437         (toJS):
438         * API/JSCallbackConstructor.cpp:
439         (JSC::constructJSCallback):
440         * API/JSCallbackFunction.cpp:
441         (JSC::JSCallbackFunction::call):
442         * API/JSCallbackObjectFunctions.h:
443         (JSC::::asCallbackObject):
444         (JSC::::finishCreation):
445         (JSC::::construct):
446         (JSC::::call):
447         * API/JSObjectRef.cpp:
448         (JSObjectGetPrivate):
449         (JSObjectSetPrivate):
450         (JSObjectGetPrivateProperty):
451         (JSObjectSetPrivateProperty):
452         (JSObjectDeletePrivateProperty):
453         * API/JSValueRef.cpp:
454         (JSValueIsObjectOfClass):
455         * API/JSWeakObjectMapRefPrivate.cpp:
456         * bytecompiler/BytecodeGenerator.cpp:
457         (JSC::BytecodeGenerator::resolve):
458         (JSC::BytecodeGenerator::resolveConstDecl):
459         * debugger/DebuggerActivation.cpp:
460         (JSC::DebuggerActivation::finishCreation):
461         * dfg/DFGOperations.cpp:
462         * interpreter/Interpreter.cpp:
463         (JSC::Interpreter::execute):
464         (JSC::Interpreter::privateExecute):
465         * jit/JITStubs.cpp:
466         (JSC::DEFINE_STUB_FUNCTION):
467         * runtime/Executable.h:
468         (JSC::isHostFunction):
469         * runtime/JSActivation.h:
470         (JSC::asActivation):
471         * runtime/JSArray.cpp:
472         (JSC::JSArray::defineOwnProperty):
473         * runtime/JSArray.h:
474         (JSC::asArray):
475         * runtime/JSBoundFunction.cpp:
476         (JSC::boundFunctionCall):
477         (JSC::boundFunctionConstruct):
478         * runtime/JSByteArray.h:
479         (JSC::asByteArray):
480         * runtime/JSCell.cpp:
481         (JSC::JSCell::toObject):
482         * runtime/JSCell.h:
483         (JSC::jsCast):
484         * runtime/JSGlobalObject.h:
485         (JSC::asGlobalObject):
486         * runtime/JSGlobalObjectFunctions.cpp:
487         (JSC::globalFuncEval):
488         * runtime/JSObject.cpp:
489         (JSC::JSObject::setPrototypeWithCycleCheck):
490         (JSC::JSObject::allowsAccessFrom):
491         (JSC::JSObject::toThisObject):
492         (JSC::JSObject::unwrappedObject):
493         * runtime/JSObject.h:
494         (JSC::asObject):
495         * runtime/JSPropertyNameIterator.h:
496         (JSC::Register::propertyNameIterator):
497         * runtime/JSString.h:
498         (JSC::asString):
499         (JSC::JSValue::toString):
500         * runtime/StringPrototype.cpp:
501         (JSC::stringProtoFuncSubstr):
502
503 2012-04-05  Benjamin Poulain  <bpoulain@apple.com>
504
505         Make something faster than JSStringBuilder for joining an array of JSValue
506         https://bugs.webkit.org/show_bug.cgi?id=83180
507
508         Reviewed by Geoffrey Garen.
509
510         This patch add the class JSStringJoiner optimized for join() operations.
511
512         This class makes stricter constraints than JSStringBuilder in order avoid
513         memory allocations.
514
515         In the best case, the class allocate memory only twice:
516         -Allocate an array to keep a list of UString to join.
517         -Allocate the final string.
518
519         We also avoid the conversion from 8bits strings to 16bits strings since
520         they are costly and unlikly to help for subsequent calls.
521
522         * CMakeLists.txt:
523         * GNUmakefile.list.am:
524         * JavaScriptCore.gypi:
525         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
526         * JavaScriptCore.xcodeproj/project.pbxproj:
527         * Target.pri:
528         * runtime/ArrayPrototype.cpp:
529         (JSC::arrayProtoFuncToLocaleString):
530         (JSC::arrayProtoFuncJoin):
531         * runtime/JSStringJoiner.cpp: Added.
532         (JSC):
533         (JSC::appendStringToData):
534         (JSC::joinStrings):
535         (JSC::JSStringJoiner::build):
536         * runtime/JSStringJoiner.h: Added.
537         (JSC):
538         (JSStringJoiner):
539         (JSC::JSStringJoiner::JSStringJoiner):
540         (JSC::JSStringJoiner::append):
541
542 2012-04-05  Gavin Barraclough  <barraclough@apple.com>
543
544         https://bugs.webkit.org/show_bug.cgi?id=77293
545         [Un]Reserve 'let'
546
547         Rubber stamped by Oliver Hunt.
548
549         Revert r106198.
550         This does break the web - e.g. https://bvi.bnc.ca/index/bnc/indexen.html
551         If we're going to reserve let, we're going to have to do so in a more
552         circumspect fashion.
553
554         * parser/Keywords.table:
555
556 2012-04-05  Michael Saboff  <msaboff@apple.com>
557
558         Rolling out http://trac.webkit.org/changeset/113262.
559         Original code was fine.
560
561         Rubber-stamped by Oliver Hunt.
562
563         * assembler/MacroAssembler.h:
564         (JSC::MacroAssembler::additionBlindedConstant):
565
566 2012-04-05  Patrick Gansterer  <paroga@webkit.org>
567
568         [WinCE] Remove unnecessary function decleration
569         https://bugs.webkit.org/show_bug.cgi?id=83155
570
571         Reviewed by Kentaro Hara.
572
573         * runtime/JSDateMath.cpp:
574
575 2012-04-04  Patrick Gansterer  <paroga@webkit.org>
576
577         Add WTF::getCurrentLocalTime()
578         https://bugs.webkit.org/show_bug.cgi?id=83164
579
580         Reviewed by Alexey Proskuryakov.
581
582         Replace the calls to WTF::getLocalTime() with time(0) with the new function.
583         This allows us to use Win32 API on windows to get the same result in a next step.
584
585         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
586         * runtime/DateConstructor.cpp:
587         (JSC::callDate):
588
589 2012-04-04  Oliver Hunt  <oliver@apple.com>
590
591         Parser fails to revert some state after parsing expression and object literals.
592         https://bugs.webkit.org/show_bug.cgi?id=83236
593
594         Reviewed by Gavin Barraclough.
595
596         Reset left hand side counter after parsing the literals.
597
598         * parser/Parser.cpp:
599         (JSC::::parseObjectLiteral):
600         (JSC::::parseStrictObjectLiteral):
601         (JSC::::parseArrayLiteral):
602
603 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
604
605         DFG InstanceOf should not uselessly speculate cell
606         https://bugs.webkit.org/show_bug.cgi?id=83234
607
608         Reviewed by Oliver Hunt.
609         
610         If InstanceOf is the only user of its child then don't speculate cell, since
611         the not-cell case is super easy to handle.
612
613         * dfg/DFGSpeculativeJIT.cpp:
614         (JSC::DFG::SpeculativeJIT::compileInstanceOf):
615
616 2012-04-04  Michael Saboff  <msaboff@apple.com>
617
618         Fixed minor error: "& 3" should be "& 2".
619
620         Rubber-stamped by Oliver Hunt.
621
622         * assembler/MacroAssembler.h:
623         (JSC::MacroAssembler::additionBlindedConstant):
624
625 2012-04-04  Michael Saboff  <msaboff@apple.com>
626
627         Constant Blinding for add/sub immediate crashes in ArmV7 when dest is SP
628         https://bugs.webkit.org/show_bug.cgi?id=83191
629
630         Reviewed by Oliver Hunt.
631
632         Make are that blinded constant pairs are similarly aligned to the
633         original immediate values so that instructions that expect that
634         alignment work correctly.  One example is ARMv7 add/sub imm to SP.
635
636         * assembler/ARMv7Assembler.h:
637         (JSC::ARMv7Assembler::add): Added ASSERT that immediate is word aligned.
638         (JSC::ARMv7Assembler::sub): Added ASSERT that immediate is word aligned.
639         (JSC::ARMv7Assembler::sub_S): Added ASSERT that immediate is word aligned.
640         * assembler/MacroAssembler.h:
641         (JSC::MacroAssembler::additionBlindedConstant):
642
643 2012-04-04  Filip Pizlo  <fpizlo@apple.com>
644
645         DFG should short-circuit Branch(LogicalNot(...))
646         https://bugs.webkit.org/show_bug.cgi?id=83181
647
648         Reviewed by Geoff Garen.
649         
650         Slight (sub 1%) speed-up on V8.
651
652         * dfg/DFGFixupPhase.cpp:
653         (JSC::DFG::FixupPhase::fixupNode):
654
655 2012-04-04  Geoffrey Garen  <ggaren@apple.com>
656
657         [Qt] REGRESSION(r113141): All tests assert on 32 bit debug mode
658         https://bugs.webkit.org/show_bug.cgi?id=83139
659
660         Reviewed by Sam Weinig.
661
662         * heap/PassWeak.h:
663         (JSC::::get): 32-bit JSValue treats JSValue(nullptr).asCell() as an error,
664         so work around that here. (Long-term, we should make 32-bit and 64-bit
665         agree on the right behavior.)
666
667 2012-04-03  Geoffrey Garen  <ggaren@apple.com>
668
669         Updated JSC expected test results to reflect recent bug fixes <disapproving look>.
670
671         Reviewed by Sam Weinig.
672
673         * tests/mozilla/expected.html:
674
675 2012-03-29  Geoffrey Garen  <ggaren@apple.com>
676
677         First step toward incremental Weak<T> finalization
678         https://bugs.webkit.org/show_bug.cgi?id=82670
679
680         Reviewed by Filip Pizlo.
681
682         This patch implements a Weak<T> heap that is compatible with incremental
683         finalization, while making as few behavior changes as possible. The behavior
684         changes it makes are:
685
686         (*) Weak<T>'s raw JSValue no longer reverts to JSValue() automatically --
687         instead, a separate flag indicates that the JSValue is no longer valid.
688         (This is required so that the JSValue can be preserved for later finalization.)
689         Objects dealing with WeakImpls directly must change to check the flag.
690
691         (*) Weak<T> is no longer a subclass of Handle<T>.
692
693         (*) DOM GC performance is different -- 9% faster in the geometric mean,
694         but 15% slower in one specific case:
695                 gc-dom1.html: 6%  faster
696                 gc-dom2.html: 23% faster
697                 gc-dom3.html: 17% faster
698                 gc-dom4.html: 15% *slower*
699
700         The key features of this new heap are:
701
702         (*) Each block knows its own state, independent of any other blocks.
703
704         (*) Each block caches its own sweep result.
705
706         (*) The heap visits dead Weak<T>s at the end of GC. (It doesn't
707         mark them yet, since that would be a behavior change.)
708
709         * API/JSCallbackObject.cpp:
710         (JSC::JSCallbackObjectData::finalize):
711         * API/JSCallbackObjectFunctions.h:
712         (JSC::::init): Updated to use the new WeakHeap API.
713
714         * CMakeLists.txt:
715         * GNUmakefile.list.am:
716         * JavaScriptCore.gypi:
717         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
718         * JavaScriptCore.xcodeproj/project.pbxproj:
719         * Target.pri: Paid the build system tax since I added some new files.
720
721         * heap/Handle.h: Made WeakBlock a friend and exposed slot() as public,
722         so we can keep passing a Handle<T> to finalizers, to avoid more surface
723         area change in this patch. A follow-up patch should change the type we
724         pass to finalizers.
725
726         * heap/HandleHeap.cpp:
727         (JSC):
728         (JSC::HandleHeap::writeBarrier):
729         (JSC::HandleHeap::isLiveNode):
730         * heap/HandleHeap.h:
731         (JSC):
732         (HandleHeap):
733         (Node):
734         (JSC::HandleHeap::Node::Node): Removed all code related to Weak<T>, since
735         we have a separate WeakHeap now.
736
737         * heap/Heap.cpp:
738         (JSC::Heap::Heap): Removed m_extraCost because extra cost is accounted
739         for through our watermark now. Removed m_waterMark because it was unused.
740
741         (JSC::Heap::destroy): Updated for addition of WeakHeap.
742
743         (JSC::Heap::reportExtraMemoryCostSlowCase): Changed from using its own
744         variable to participating in the watermark strategy. I wanted to standardize
745         WeakHeap and all other Heap clients on this strategy, to make sure it's
746         accurate.
747  
748         (JSC::Heap::markRoots): Updated for addition of WeakHeap. Added WeakHeap
749         dead visit pass, as explained above.
750
751         (JSC::Heap::collect):
752         (JSC::Heap::resetAllocators): Updated for addition of WeakHeap.
753
754         (JSC::Heap::addFinalizer):
755         (JSC::Heap::FinalizerOwner::finalize): Updated for new Weak<T> API.
756
757         * heap/Heap.h:
758         (JSC::Heap::weakHeap):
759         (Heap):
760         (JSC::Heap::addToWaterMark): Added a way to participate in the watermarking
761         strategy, since this is the best way for WeakHeap to report its memory
762         cost. (I plan to update this in a follow-up patch to make it more accurate,
763         but for now it is not less accurate than it used to be.)
764
765         * heap/MarkedSpace.cpp:
766         (JSC::MarkedSpace::MarkedSpace):
767         (JSC::MarkedSpace::resetAllocators):
768         * heap/MarkedSpace.h:
769         (MarkedSpace):
770         (JSC::MarkedSpace::addToWaterMark):
771         (JSC::MarkedSpace::didConsumeFreeList): Removed m_nurseryWaterMark because
772         it was unused, and I didn't want to update WeakHeap to keep an usused
773         variable working. Added API for above.
774
775         * heap/PassWeak.h:
776         (JSC):
777         (WeakImplAccessor):
778         (PassWeak):
779         (JSC::::operator):
780         (JSC::::get):
781         (JSC::::was):
782         (JSC::::PassWeak):
783         (JSC::::~PassWeak):
784         (JSC::UnspecifiedBoolType):
785         (JSC::::leakImpl):
786         (JSC::adoptWeak):
787         * heap/Strong.h:
788         (JSC::Strong::operator!):
789         (Strong):
790         (JSC::Strong::operator UnspecifiedBoolType*):
791         (JSC::Strong::get):
792         * heap/Weak.h:
793         (Weak):
794         (JSC::::Weak):
795         (JSC):
796         (JSC::::isHashTableDeletedValue):
797         (JSC::::~Weak):
798         (JSC::::swap):
799         (JSC::=):
800         (JSC::::operator):
801         (JSC::UnspecifiedBoolType):
802         (JSC::::release):
803         (JSC::::clear):
804         (JSC::::hashTableDeletedValue): Lots of code changes here, but they boil
805         down to two things:
806
807         (*) Allocate WeakImpls from the WeakHeap instead of Handles from the HandleHeap.
808
809         (*) Explicitly check WeakImpl::state() for non-liveness before returning
810         a value (explained above).
811
812         These files implement the new Weak<T> heap behavior described above:
813
814         * heap/WeakBlock.cpp: Added.
815         * heap/WeakBlock.h: Added.
816         * heap/WeakHandleOwner.cpp: Added.
817         * heap/WeakHandleOwner.h: Added.
818         * heap/WeakHeap.cpp: Added.
819         * heap/WeakHeap.h: Added.
820         * heap/WeakImpl.h: Added.
821
822         One interesting difference from the old heap is that we don't allow
823         clients to overwrite a WeakImpl after allocating it, and we don't recycle
824         WeakImpls prior to garbage collection. This is required for lazy finalization,
825         but it will also help us esablish a useful invariant in the future: allocating
826         a WeakImpl will be a binding contract to run a finalizer at some point in the
827         future, even if the WeakImpl is later deallocated.
828
829         * jit/JITStubs.cpp:
830         (JSC::JITThunks::hostFunctionStub): Check the Weak<T> for ! instead of
831         its JSValue, since that's our API contract now, and the JSValue might
832         be stale.
833
834         * runtime/JSCell.h:
835         (JSC::jsCast): Allow casting NULL pointers because it's useful and harmless.
836
837         * runtime/Structure.cpp:
838         (JSC::StructureTransitionTable::add): I can't remember why I did this.
839
840         * runtime/StructureTransitionTable.h:
841         * runtime/WeakGCMap.h: I had to update these classes because they allocate
842         and deallocate weak pointers manually. They should probably stop doing that.
843
844 2012-04-03  Keishi Hattori  <keishi@webkit.org>
845
846         Disable ENABLE_DATALIST for now
847         https://bugs.webkit.org/show_bug.cgi?id=82871
848
849         Reviewed by Kent Tamura.
850
851         * Configurations/FeatureDefines.xcconfig: Disabled ENABLE_DATALIST.
852
853 2012-04-02  Filip Pizlo  <fpizlo@apple.com>
854
855         jsr/sret should be removed
856         https://bugs.webkit.org/show_bug.cgi?id=82986
857         <rdar://problem/11017015>
858
859         Reviewed by Sam Weinig and Geoff Garen.
860         
861         Replaces jsr/sret with finally block inlining.
862
863         * bytecode/CodeBlock.cpp:
864         (JSC::CodeBlock::dump):
865         * bytecode/Opcode.h:
866         (JSC):
867         (JSC::padOpcodeName):
868         * bytecompiler/BytecodeGenerator.cpp:
869         (JSC::BytecodeGenerator::pushFinallyContext):
870         (JSC::BytecodeGenerator::emitComplexJumpScopes):
871         (JSC):
872         * bytecompiler/BytecodeGenerator.h:
873         (FinallyContext):
874         (BytecodeGenerator):
875         * bytecompiler/NodesCodegen.cpp:
876         (JSC::TryNode::emitBytecode):
877         * interpreter/Interpreter.cpp:
878         (JSC::Interpreter::privateExecute):
879         * jit/JIT.cpp:
880         (JSC::JIT::privateCompileMainPass):
881         (JSC::JIT::privateCompile):
882         * jit/JIT.h:
883         (JIT):
884         * jit/JITOpcodes.cpp:
885         (JSC):
886         * jit/JITOpcodes32_64.cpp:
887         (JSC):
888         * llint/LowLevelInterpreter32_64.asm:
889         * llint/LowLevelInterpreter64.asm:
890
891 2012-04-03  Mark Rowe  <mrowe@apple.com>
892
893         Make it possible to install the JavaScriptCore test tools.
894
895         Part of <rdar://problem/11158607>.
896         
897         Reviewed by Filip Pizlo.
898
899         * JavaScriptCore.xcodeproj/project.pbxproj: Introduce an aggregate target named
900         Test Tools that builds testapi, minidom and testRegExp. Switch All from depending on
901         those targets individually to depending on the new aggregate target.
902
903 2012-04-03  Filip Pizlo  <fpizlo@apple.com>
904
905         Offlineasm ARM backend has a very convoluted way of saying it wants to emit a
906         three-operand multiply instruction
907         https://bugs.webkit.org/show_bug.cgi?id=83100
908
909         Reviewed by Darin Adler.
910         
911         Changed the "muli"/"mulp" case to call emitArmV7() since that helper method was
912         already smart enough to do the Right Thing for multiply.
913
914         * offlineasm/armv7.rb:
915
916 2012-04-03  Filip Pizlo  <fpizlo@apple.com>
917
918         Offlineasm ARM backend uses the wrong mnemonic for multiply
919         https://bugs.webkit.org/show_bug.cgi?id=83098
920         <rdar://problem/11168744>
921
922         Reviewed by Gavin Barraclough.
923         
924         Use "mul" instead of "muls" since we're passing three operands, not two.
925
926         * offlineasm/armv7.rb:
927
928 2012-04-03  Gavin Barraclough  <barraclough@apple.com>
929
930         Linux crashes during boot
931         https://bugs.webkit.org/show_bug.cgi?id=83096
932
933         Reviewed by Filip Pizlo.
934
935         The bug here is that we add empty JSValues to the sparse map, and then set them
936         - but a GC may occur before doing so (due to a call to reportExtraMemory cost).
937         We may want to consider making it safe to mark empty JSValues, but the simple &
938         contained fix to this specific bug is to just initialize these values to
939         something other than JSValue().
940
941         * runtime/JSArray.cpp:
942         (JSC::SparseArrayValueMap::add):
943             - Initialize sparse map entries.
944
945 2012-04-02  Oliver Hunt  <oliver@apple.com>
946
947         Incorrect liveness information when inlining
948         https://bugs.webkit.org/show_bug.cgi?id=82985
949
950         Reviewed by Filip Pizlo.
951
952         Don't remap register numbers that have already been remapped.
953
954         * dfg/DFGByteCodeParser.cpp:
955         (JSC::DFG::ByteCodeParser::handleInlining):
956
957 2012-04-02  Filip Pizlo  <fpizlo@apple.com>
958
959         Activation tear-off neglects to copy the callee and scope chain, leading to crashes if we
960         try to create an arguments object from the activation
961         https://bugs.webkit.org/show_bug.cgi?id=82947
962         <rdar://problem/11058598>
963
964         Reviewed by Gavin Barraclough.
965         
966         We now copy the entire call frame header just to be sure. This is mostly perf-netural,
967         except for a 3.7% slow-down in V8/earley.
968
969         * runtime/JSActivation.cpp:
970         (JSC::JSActivation::visitChildren):
971         * runtime/JSActivation.h:
972         (JSC::JSActivation::tearOff):
973
974 2012-04-02  Daniel Bates  <dbates@webkit.org>
975
976         Remove Source/JavaScriptCore/wtf and its empty subdirectories
977
978         Rubber-stamped by Eric Seidel.
979
980         Following the move of WTF from Source/JavaScriptCore/wtf to Source/WTF
981         (https://bugs.webkit.org/show_bug.cgi?id=75673), remove directory
982         Source/JavaScriptCore/wtf and its empty subdirectories.
983
984         * wtf: Removed.
985         * wtf/android: Removed.
986         * wtf/blackberry: Removed.
987         * wtf/chromium: Removed.
988         * wtf/dtoa: Removed.
989         * wtf/efl: Removed.
990         * wtf/gobject: Removed.
991         * wtf/gtk: Removed.
992         * wtf/mac: Removed.
993         * wtf/qt: Removed.
994         * wtf/qt/compat: Removed.
995         * wtf/tests: Removed.
996         * wtf/text: Removed.
997         * wtf/threads: Removed.
998         * wtf/threads/win: Removed.
999         * wtf/unicode: Removed.
1000         * wtf/unicode/glib: Removed.
1001         * wtf/unicode/icu: Removed.
1002         * wtf/unicode/qt4: Removed.
1003         * wtf/unicode/wince: Removed.
1004         * wtf/url: Removed.
1005         * wtf/url/api: Removed.
1006         * wtf/url/src: Removed.
1007         * wtf/win: Removed.
1008         * wtf/wince: Removed.
1009         * wtf/wx: Removed.
1010
1011 2012-04-02  Carlos Garcia Campos  <cgarcia@igalia.com>
1012
1013         Unreviewed. Fix make distcheck issues.
1014
1015         * GNUmakefile.list.am: Add missing file.
1016
1017 2012-04-01  Darin Adler  <darin@apple.com>
1018
1019         Fix incorrect path for libWTF.a in Mac project file.
1020
1021         * JavaScriptCore.xcodeproj/project.pbxproj: Removed the "../Release" prefix that
1022         would cause other configurations to try to link with the "Release" version of
1023         libWTF.a instead of the correct version.
1024
1025 2012-03-29  Filip Pizlo  <fpizlo@apple.com>
1026
1027         DFG should optimize a==b for a being an object and b being either an object or
1028         null/undefined, and vice versa
1029         https://bugs.webkit.org/show_bug.cgi?id=82656
1030
1031         Reviewed by Oliver Hunt.
1032         
1033         Implements additional object equality optimizations for the case that one
1034         operand is predicted to be an easily speculated object (like FinalObject or
1035         Array) and the other is either an easily speculated object or Other, i.e.
1036         Null or Undefined.
1037         
1038         2-5% speed-up on V8/raytrace, leading to a sub-1% progression on V8.
1039         
1040         I also took the opportunity to clean up the control flow for the speculation
1041         decisions in the various Compare opcodes. And to fix a build bug in SamplingTool.
1042         And to remove debug cruft I stupidly committed in my last patch.
1043         
1044         * bytecode/SamplingTool.h:
1045         (SamplingRegion):
1046         * dfg/DFGAbstractState.cpp:
1047         (JSC::DFG::AbstractState::execute):
1048         * dfg/DFGOperations.cpp:
1049         * dfg/DFGSpeculativeJIT.cpp:
1050         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
1051         (JSC::DFG::SpeculativeJIT::compare):
1052         * dfg/DFGSpeculativeJIT.h:
1053         (SpeculativeJIT):
1054         * dfg/DFGSpeculativeJIT32_64.cpp:
1055         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
1056         (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
1057         (DFG):
1058         (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
1059         * dfg/DFGSpeculativeJIT64.cpp:
1060         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranch):
1061         (JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):
1062         (DFG):
1063         (JSC::DFG::SpeculativeJIT::compilePeepHoleObjectToObjectOrOtherEquality):
1064
1065 2012-03-30  David Barr  <davidbarr@chromium.org>
1066
1067         Split up top-level .gitignore and .gitattributes
1068         https://bugs.webkit.org/show_bug.cgi?id=82687
1069
1070         Reviewed by Tor Arne Vestbø.
1071
1072         * JavaScriptCore.gyp/.gitignore: Added.
1073
1074 2012-03-30  Steve Falkenburg  <sfalken@apple.com>
1075
1076         Windows (make based) build fix.
1077
1078         * JavaScriptCore.vcproj/JavaScriptCore.make: Copy WTF header files into a place where JavaScriptCore build can see them.
1079
1080 2012-03-30  Keishi Hattori  <keishi@webkit.org>
1081
1082         Change ENABLE_INPUT_COLOR to ENABLE_INPUT_TYPE_COLOR and enable it for chromium
1083         https://bugs.webkit.org/show_bug.cgi?id=80972
1084
1085         Reviewed by Kent Tamura.
1086
1087         * Configurations/FeatureDefines.xcconfig:
1088
1089 2012-03-29  Mark Hahnenberg  <mhahnenberg@apple.com>
1090
1091         Refactor recompileAllJSFunctions() to be less expensive
1092         https://bugs.webkit.org/show_bug.cgi?id=80330
1093
1094         Reviewed by Filip Pizlo.
1095
1096         This change is performance neutral on the JS benchmarks we track. It's mostly to improve page 
1097         load performance, which currently does at least a couple full GCs per navigation.
1098
1099         * heap/Heap.cpp:
1100         (JSC::Heap::discardAllCompiledCode): Rename recompileAllJSFunctions to discardAllCompiledCode 
1101         because the function doesn't actually recompile anything (and never did); it simply throws code
1102         away for it to be recompiled later if we determine we should do so.
1103         (JSC):
1104         (JSC::Heap::collectAllGarbage):
1105         (JSC::Heap::addFunctionExecutable): Adds a newly created FunctionExecutable to the Heap's list.
1106         (JSC::Heap::removeFunctionExecutable): Removes the specified FunctionExecutable from the Heap's list.
1107         * heap/Heap.h:
1108         (JSC):
1109         (Heap):
1110         * runtime/Executable.cpp: Added next and prev fields to FunctionExecutables so that they can 
1111         be used in DoublyLinkedLists.
1112         (JSC::FunctionExecutable::FunctionExecutable):
1113         (JSC::FunctionExecutable::finalize): Removes the FunctionExecutable from the Heap's list.
1114         * runtime/Executable.h:
1115         (FunctionExecutable):
1116         (JSC::FunctionExecutable::create): Adds the FunctionExecutable to the Heap's list.
1117         * runtime/JSGlobalData.cpp: Remove recompileAllJSFunctions, as it's the Heap's job to own and manage 
1118         the list of FunctionExecutables.
1119         * runtime/JSGlobalData.h:
1120         (JSGlobalData):
1121         * runtime/JSGlobalObject.cpp:
1122         (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Use the new discardAllCompiledCode.
1123
1124 2012-03-29  Filip Pizlo  <fpizlo@apple.com>
1125
1126         Unreviewed build fix for non-x86 platforms.
1127
1128         * dfg/DFGSpeculativeJIT.cpp:
1129         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
1130         * dfg/DFGSpeculativeJIT.h:
1131         (JSC::DFG::SpeculativeJIT::callOperation):
1132         * jit/JITArithmetic32_64.cpp:
1133         (JSC::JIT::emitSlow_op_mod):
1134
1135 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1136
1137         Windows build fix p2.
1138
1139         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1140
1141 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1142
1143         Windows build fix p1.
1144
1145         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1146
1147 2012-03-29  Gavin Barraclough  <barraclough@apple.com>
1148
1149         Template the Yarr::Interpreter on the character type
1150         https://bugs.webkit.org/show_bug.cgi?id=82637
1151
1152         Reviewed by Sam Weinig.
1153
1154         We should be able to call to the interpreter after having already checked the character type,
1155         without having to re-package the character pointer back up into a string!
1156
1157         * runtime/RegExp.cpp:
1158         (JSC::RegExp::match):
1159         (JSC::RegExp::matchCompareWithInterpreter):
1160             - Don't pass length.
1161         * yarr/Yarr.h:
1162             - moved function declarations to YarrInterpreter.h.
1163         * yarr/YarrInterpreter.cpp:
1164         (Yarr):
1165         (Interpreter):
1166         (JSC::Yarr::Interpreter::InputStream::InputStream):
1167         (InputStream):
1168         (JSC::Yarr::Interpreter::Interpreter):
1169         (JSC::Yarr::interpret):
1170             - templated Interpreter class on CharType.
1171         * yarr/YarrInterpreter.h:
1172         (Yarr):
1173             - added function declarations.
1174
1175 2012-03-29  David Kilzer  <ddkilzer@apple.com>
1176
1177         Don't use a flattened framework path when building on OS X
1178
1179         Reviewed by Mark Rowe.
1180
1181         * Configurations/ToolExecutable.xcconfig: Use REAL_PLATFORM_NAME
1182         to select different INSTALL_PATH values.
1183
1184 2012-03-29  Kevin Ollivier  <kevino@theolliviers.com>
1185
1186         [wx] Unreviewed build fix, add Win-specific sources
1187         the wx port needs after WTF move.
1188
1189         * wscript:
1190
1191 2012-03-29  Andy Estes  <aestes@apple.com>
1192
1193         Remove an unused variable that breaks the build with newer versions of clang.
1194
1195         Rubber stamped by Gavin Barraclough.
1196
1197         * yarr/YarrJIT.cpp:
1198         (JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
1199
1200 2012-03-29  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
1201
1202         HashMap<>::add should return a more descriptive object
1203         https://bugs.webkit.org/show_bug.cgi?id=71063
1204
1205         Reviewed by Ryosuke Niwa.
1206
1207         Update code to use AddResult instead of a pair. Note that since WeakGCMap wraps
1208         the iterator type, there's a need for its own AddResult type -- instantiated from
1209         HashTableAddResult template class.
1210
1211         * API/JSCallbackObject.h:
1212         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty):
1213         * API/JSClassRef.cpp:
1214         (OpaqueJSClass::contextData):
1215         * bytecompiler/BytecodeGenerator.cpp:
1216         (JSC::BytecodeGenerator::addVar):
1217         (JSC::BytecodeGenerator::addGlobalVar):
1218         (JSC::BytecodeGenerator::addConstant):
1219         (JSC::BytecodeGenerator::addConstantValue):
1220         (JSC::BytecodeGenerator::emitLoad):
1221         (JSC::BytecodeGenerator::addStringConstant):
1222         (JSC::BytecodeGenerator::emitLazyNewFunction):
1223         * bytecompiler/NodesCodegen.cpp:
1224         (JSC::PropertyListNode::emitBytecode):
1225         * debugger/Debugger.cpp:
1226         * dfg/DFGAssemblyHelpers.cpp:
1227         (JSC::DFG::AssemblyHelpers::decodedCodeMapFor):
1228         * dfg/DFGByteCodeParser.cpp:
1229         (JSC::DFG::ByteCodeParser::cellConstant):
1230         (JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
1231         * jit/JITStubs.cpp:
1232         (JSC::JITThunks::ctiStub):
1233         (JSC::JITThunks::hostFunctionStub):
1234         * parser/Parser.cpp:
1235         (JSC::::parseStrictObjectLiteral):
1236         * parser/Parser.h:
1237         (JSC::Scope::declareParameter):
1238         * runtime/Identifier.cpp:
1239         (JSC::Identifier::add):
1240         (JSC::Identifier::add8):
1241         (JSC::Identifier::addSlowCase):
1242         * runtime/Identifier.h:
1243         (JSC::Identifier::add):
1244         (JSC::IdentifierTable::add):
1245         * runtime/JSArray.cpp:
1246         (JSC::SparseArrayValueMap::add):
1247         (JSC::SparseArrayValueMap::put):
1248         (JSC::SparseArrayValueMap::putDirect):
1249         (JSC::JSArray::enterDictionaryMode):
1250         (JSC::JSArray::defineOwnNumericProperty):
1251         * runtime/JSArray.h:
1252         (SparseArrayValueMap):
1253         * runtime/PropertyNameArray.cpp:
1254         (JSC::PropertyNameArray::add):
1255         * runtime/StringRecursionChecker.h:
1256         (JSC::StringRecursionChecker::performCheck):
1257         * runtime/Structure.cpp:
1258         (JSC::StructureTransitionTable::add):
1259         * runtime/WeakGCMap.h:
1260         (WeakGCMap):
1261         (JSC::WeakGCMap::add):
1262         (JSC::WeakGCMap::set):
1263         * tools/ProfileTreeNode.h:
1264         (JSC::ProfileTreeNode::sampleChild):
1265
1266 2012-03-29  Patrick Gansterer  <paroga@webkit.org>
1267
1268         Build fix for !ENABLE(YARR_JIT) after r112454.
1269
1270         * runtime/RegExp.cpp:
1271         (JSC::RegExp::invalidateCode):
1272
1273 2012-03-28  Filip Pizlo  <fpizlo@apple.com>
1274
1275         DFG object equality speculations should be simplified
1276         https://bugs.webkit.org/show_bug.cgi?id=82557
1277
1278         Reviewed by Gavin Barraclough.
1279
1280         * dfg/DFGNode.h:
1281         (JSC::DFG::Node::shouldSpeculateFinalObject):
1282         (JSC::DFG::Node::shouldSpeculateArray):
1283
1284 2012-03-28  David Kilzer  <ddkilzer@apple.com>
1285
1286         minidom configurations should be based on ToolExecutable.xcconfig
1287         <http://webkit.org/b/82513>
1288
1289         Reviewed by Mark Rowe.
1290
1291         Note that this patch changes minidom from being installed in
1292         /usr/local/bin to JavaScriptCore.framework/Resources.
1293
1294         * Configurations/ToolExecutable.xcconfig: Add semi-colon.
1295         * JavaScriptCore.xcodeproj/project.pbxproj: Base minidom
1296         configurations on ToolExecutable.xcconfig.  Remove redundant
1297         PRODUCT_NAME and SKIP_INSTALL variables.
1298
1299 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1300
1301         Build fix - some compiles generating NORETURN related warnings.
1302
1303         * yarr/YarrJIT.cpp:
1304         (JSC::Yarr::YarrGenerator::setSubpatternStart):
1305         (JSC::Yarr::YarrGenerator::setSubpatternEnd):
1306         (JSC::Yarr::YarrGenerator::clearSubpatternStart):
1307
1308 2012-03-28  Kevin Ollivier  <kevino@theolliviers.com>
1309
1310         [wx] Unreviewed. Build fix, move WTF back into JSCore target
1311         until issues with JSCore not linking in all WTF symbols are resolved.
1312         
1313         * wscript:
1314
1315 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1316
1317         Yarr: if we're not using the output array, don't populate it!
1318         https://bugs.webkit.org/show_bug.cgi?id=82519
1319
1320         Reviewed by Sam Weinig.
1321
1322         * runtime/RegExp.cpp:
1323         (JSC):
1324             - Missed review comment! - didn't fully remove RegExpRepresentation.
1325
1326 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
1327
1328         Yarr: if we're not using the output array, don't populate it!
1329         https://bugs.webkit.org/show_bug.cgi?id=82519
1330
1331         Reviewed by Sam Weinig.
1332
1333         Add a new variant of the match method to RegExp that returns a MatchResult,
1334         and modify YarrJIT to be able to compile code that doesn't use an output vector.
1335
1336         This is a 3% progression on v8-regexp.
1337
1338         * JavaScriptCore.xcodeproj/project.pbxproj:
1339             - Moved MatchResult into its own header.
1340         * assembler/AbstractMacroAssembler.h:
1341             - Added missing include.
1342         * runtime/MatchResult.h: Added.
1343         (MatchResult::MatchResult):
1344         (MatchResult):
1345         (MatchResult::failed):
1346         (MatchResult::operator bool):
1347         (MatchResult::empty):
1348             - Moved MatchResult into its own header.
1349         * runtime/RegExp.cpp:
1350         (JSC::RegExp::compile):
1351         (JSC::RegExp::compileIfNecessary):
1352         (JSC::RegExp::match):
1353             - Changed due to execute & representation changes.
1354         (JSC::RegExp::compileMatchOnly):
1355         (JSC::RegExp::compileIfNecessaryMatchOnly):
1356             - Added helper to compile MatchOnly code.
1357         (JSC::RegExp::invalidateCode):
1358         (JSC::RegExp::matchCompareWithInterpreter):
1359         (JSC::RegExp::printTraceData):
1360             - Changed due representation changes.
1361         * runtime/RegExp.h:
1362         (RegExp):
1363         (JSC::RegExp::hasCode):
1364             - Made YarrCodeBlock a member.
1365         * runtime/RegExpConstructor.h:
1366         (RegExpConstructor):
1367         (JSC::RegExpConstructor::performMatch):
1368             - Added no-ovector form.
1369         * runtime/RegExpMatchesArray.cpp:
1370         (JSC::RegExpMatchesArray::reifyAllProperties):
1371             - Match now takes a reference to ovector, not a pointer.
1372         * runtime/RegExpObject.h:
1373         (JSC):
1374             - Moved MatchResult into its own header.
1375         * runtime/StringPrototype.cpp:
1376         (JSC::stringProtoFuncSplit):
1377             - Match now takes a reference to ovector, not a pointer.
1378         * testRegExp.cpp:
1379         (testOneRegExp):
1380             - Match now takes a reference to ovector, not a pointer.
1381         * yarr/YarrJIT.cpp:
1382         (Yarr):
1383         (YarrGenerator):
1384         (JSC::Yarr::YarrGenerator::initCallFrame):
1385         (JSC::Yarr::YarrGenerator::removeCallFrame):
1386         (JSC::Yarr::YarrGenerator::setSubpatternStart):
1387         (JSC::Yarr::YarrGenerator::setSubpatternEnd):
1388         (JSC::Yarr::YarrGenerator::clearSubpatternStart):
1389         (JSC::Yarr::YarrGenerator::setMatchStart):
1390         (JSC::Yarr::YarrGenerator::getMatchStart):
1391             - Added helper functions to intermediate access to output.
1392         (JSC::Yarr::YarrGenerator::generateDotStarEnclosure):
1393         (JSC::Yarr::YarrGenerator::generate):
1394         (JSC::Yarr::YarrGenerator::backtrack):
1395         (JSC::Yarr::YarrGenerator::generateEnter):
1396         (JSC::Yarr::YarrGenerator::compile):
1397             - Changed to use the new helpers, only generate subpatterns if IncludeSubpatterns.
1398         (JSC::Yarr::jitCompile):
1399             - Needs to template of MatchOnly or IncludeSubpatterns.
1400         * yarr/YarrJIT.h:
1401         (YarrCodeBlock):
1402         (JSC::Yarr::YarrCodeBlock::set8BitCode):
1403         (JSC::Yarr::YarrCodeBlock::set16BitCode):
1404         (JSC::Yarr::YarrCodeBlock::has8BitCodeMatchOnly):
1405         (JSC::Yarr::YarrCodeBlock::has16BitCodeMatchOnly):
1406         (JSC::Yarr::YarrCodeBlock::set8BitCodeMatchOnly):
1407         (JSC::Yarr::YarrCodeBlock::set16BitCodeMatchOnly):
1408         (JSC::Yarr::YarrCodeBlock::execute):
1409         (JSC::Yarr::YarrCodeBlock::clear):
1410             - Added a second set of CodeRefs, so that we can compile RexExps with/without subpattern matching.
1411
1412 2012-03-27  Filip Pizlo  <fpizlo@apple.com>
1413
1414         DFG OSR exit should not generate an exit for variables of inlinees if the
1415         inlinees are not in scope
1416         https://bugs.webkit.org/show_bug.cgi?id=82312
1417
1418         Reviewed by Oliver Hunt.
1419         
1420         * bytecode/CodeBlock.h:
1421         (JSC::baselineCodeBlockForInlineCallFrame):
1422         (JSC):
1423         (JSC::baselineCodeBlockForOriginAndBaselineCodeBlock):
1424         * dfg/DFGOSRExit.cpp:
1425         (JSC::DFG::computeNumVariablesForCodeOrigin):
1426         (DFG):
1427         (JSC::DFG::OSRExit::OSRExit):
1428
1429 2012-03-27  Matt Lilek  <mrl@apple.com>
1430
1431         Stop compiling Interpreter.cpp with -fno-var-tracking
1432         https://bugs.webkit.org/show_bug.cgi?id=82299
1433
1434         Reviewed by Anders Carlsson.
1435
1436         * JavaScriptCore.xcodeproj/project.pbxproj:
1437
1438 2012-03-27  Pratik Solanki  <psolanki@apple.com>
1439
1440         Compiler warning when JIT is not enabled
1441         https://bugs.webkit.org/show_bug.cgi?id=82352
1442
1443         Reviewed by Filip Pizlo.
1444
1445         * runtime/JSFunction.cpp:
1446         (JSC::JSFunction::create):
1447
1448 2012-03-26  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
1449
1450         Unaligned userspace access for SH4 platforms
1451         https://bugs.webkit.org/show_bug.cgi?id=79104
1452
1453         Reviewed by Gavin Barraclough.
1454
1455         * assembler/AbstractMacroAssembler.h:
1456         (Jump):
1457         (JSC::AbstractMacroAssembler::Jump::Jump):
1458         (JSC::AbstractMacroAssembler::Jump::link):
1459         * assembler/MacroAssemblerSH4.h:
1460         (JSC::MacroAssemblerSH4::load16Unaligned):
1461         (JSC::MacroAssemblerSH4::load32WithUnalignedHalfWords):
1462         (JSC::MacroAssemblerSH4::branchDouble):
1463         (JSC::MacroAssemblerSH4::branchTrue):
1464         (JSC::MacroAssemblerSH4::branchFalse):
1465         * assembler/SH4Assembler.h:
1466         (JSC::SH4Assembler::extraInstrForBranch):
1467         (SH4Assembler):
1468         (JSC::SH4Assembler::bra):
1469         (JSC::SH4Assembler::linkJump):
1470         * jit/JIT.h:
1471         (JIT):
1472         * yarr/YarrJIT.cpp:
1473         (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
1474
1475 2012-03-26  Ryosuke Niwa  <rniwa@webkit.org>
1476
1477         cssText should use shorthand notations
1478         https://bugs.webkit.org/show_bug.cgi?id=81737
1479
1480         Reviewed by Enrica Casucci.
1481
1482         Export symbols of BitVector on Windows.
1483
1484         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1485
1486 2012-03-26  Filip Pizlo  <fpizlo@apple.com>
1487
1488         DFG should assert that argument value recoveries can only be
1489         AlreadyInRegisterFile or Constant
1490         https://bugs.webkit.org/show_bug.cgi?id=82249
1491
1492         Reviewed by Michael Saboff.
1493         
1494         Made the assertions that the DFG makes for argument value recoveries match
1495         what Arguments expects.
1496
1497         * bytecode/ValueRecovery.h:
1498         (JSC::ValueRecovery::isConstant):
1499         (ValueRecovery):
1500         (JSC::ValueRecovery::isAlreadyInRegisterFile):
1501         * dfg/DFGSpeculativeJIT.cpp:
1502         (JSC::DFG::SpeculativeJIT::compile):
1503
1504 2012-03-26  Dan Bernstein  <mitz@apple.com>
1505
1506         Tried to fix the Windows build.
1507
1508         * yarr/YarrPattern.cpp:
1509         (JSC::Yarr::CharacterClassConstructor::putRange):
1510
1511 2012-03-26  Gavin Barraclough  <barraclough@apple.com>
1512
1513         Unreviewed - speculative Windows build fix.
1514
1515         * yarr/YarrCanonicalizeUCS2.h:
1516         (JSC::Yarr::getCanonicalPair):
1517
1518 2012-03-26  Dan Bernstein  <mitz@apple.com>
1519
1520         Fixed builds with assertions disabled.
1521
1522         * yarr/YarrCanonicalizeUCS2.h:
1523         (JSC::Yarr::areCanonicallyEquivalent):
1524
1525 2012-03-26  Gavin Barraclough  <barraclough@apple.com>
1526
1527         Unreviewed - errk! - accidentally the whole pbxproj.
1528
1529         * JavaScriptCore.xcodeproj/project.pbxproj:
1530
1531 2012-03-25  Gavin Barraclough  <barraclough@apple.com>
1532
1533         Greek sigma is handled wrong in case independent regexp.
1534         https://bugs.webkit.org/show_bug.cgi?id=82063
1535
1536         Reviewed by Oliver Hunt.
1537
1538         The bug here is that we assume that any given codepoint has at most one additional value it
1539         should match under a case insensitive match, and that the pair of codepoints that match (if
1540         a codepoint does not only match itself) can be determined by calling toUpper/toLower on the
1541         given codepoint). Life is not that simple.
1542
1543         Instead, pre-calculate a set of tables mapping from a UCS2 codepoint to the set of characters
1544         it may match, under the ES5.1 case-insensitive matching rules. Since unicode is fairly regular
1545         we can pack this table quite nicely, and get it down to 364 entries. This means we can use a
1546         simple binary search to find an entry in typically eight compares.
1547
1548         * CMakeLists.txt:
1549         * GNUmakefile.list.am:
1550         * JavaScriptCore.gypi:
1551         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
1552         * JavaScriptCore.xcodeproj/project.pbxproj:
1553         * yarr/yarr.pri:
1554             - Added new files to build systems.
1555         * yarr/YarrCanonicalizeUCS2.cpp: Added.
1556             - New - autogenerated, UCS2 canonicalized comparison tables.
1557         * yarr/YarrCanonicalizeUCS2.h: Added.
1558         (JSC::Yarr::rangeInfoFor):
1559             - Look up the canonicalization info for a UCS2 character.
1560         (JSC::Yarr::getCanonicalPair):
1561             - For a UCS2 character with a single equivalent value, look it up.
1562         (JSC::Yarr::isCanonicallyUnique):
1563             - Returns true if no other UCS2 code points are canonically equal.
1564         (JSC::Yarr::areCanonicallyEquivalent):
1565             - Compare two values, under canonicalization rules.
1566         * yarr/YarrCanonicalizeUCS2.js: Added.
1567             - script used to generate YarrCanonicalizeUCS2.cpp.
1568         * yarr/YarrInterpreter.cpp:
1569         (JSC::Yarr::Interpreter::tryConsumeBackReference):
1570             - Use isCanonicallyUnique, rather than Unicode toUpper/toLower.
1571         * yarr/YarrJIT.cpp:
1572         (JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
1573         (JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
1574         (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
1575             - Use isCanonicallyUnique, rather than Unicode toUpper/toLower.
1576         * yarr/YarrPattern.cpp:
1577         (JSC::Yarr::CharacterClassConstructor::putChar):
1578             - Updated to determine canonical equivalents correctly.
1579         (JSC::Yarr::CharacterClassConstructor::putUnicodeIgnoreCase):
1580             - Added, used to put a non-ascii, non-unique character in a case-insensitive match.
1581         (JSC::Yarr::CharacterClassConstructor::putRange):
1582             - Updated to determine canonical equivalents correctly.
1583         (JSC::Yarr::YarrPatternConstructor::atomPatternCharacter):
1584             - Changed to call putUnicodeIgnoreCase, instead of putChar, avoid a double lookup of rangeInfo.
1585
1586 2012-03-26  Kevin Ollivier  <kevino@theolliviers.com>
1587
1588         [wx] Unreviewed build fix. Add the build outputs dir to the list of build dirs,
1589         so we make sure it finds the API headers on all platforms.
1590
1591         * wscript:
1592
1593 2012-03-26  Patrick Gansterer  <paroga@webkit.org>
1594
1595         Build fix for WinCE after r112039.
1596
1597         * interpreter/Register.h:
1598         (Register): Removed inline keyword from decleration since
1599                     there is an ALWAYS_INLINE at the definition anyway.
1600
1601 2012-03-26  Carlos Garcia Campos  <cgarcia@igalia.com>
1602
1603         Unreviewed. Fix make distcheck.
1604
1605         * GNUmakefile.list.am: Add missing files.
1606
1607 2012-03-25  Kevin Ollivier  <kevino@theolliviers.com>
1608
1609         [wx] Unreviewed build fix. Move WTF to its own static lib build.
1610
1611         * wscript:
1612
1613 2012-03-25  Filip Pizlo  <fpizlo@apple.com>
1614
1615         DFG int-to-double conversion should be revealed to CSE
1616         https://bugs.webkit.org/show_bug.cgi?id=82135
1617
1618         Reviewed by Oliver Hunt.
1619         
1620         This introduces the notion of an Int32ToDouble node, which is injected
1621         into the graph anytime we know that we have a double use of a node that
1622         was predicted integer. The Int32ToDouble simplifies double speculation
1623         on integers by skipping the path that would unbox doubles, if we know
1624         that the value is already proven to be an integer. It allows integer to
1625         double conversions to be subjected to common subexpression elimination
1626         (CSE) by allowing the CSE phase to see where these conversions are
1627         occurring. Finally, it allows us to see when a constant is being used
1628         as both a double and an integer. This is a bit odd, since it means that
1629         sometimes a double use of a constant will not refer directly to the
1630         constant. This should not cause problems, for now, but it may require
1631         some canonizalization in the future if we want to support strength
1632         reductions of double operations based on constants.
1633         
1634         To allow injection of nodes into the graph, this change introduces the
1635         DFG::InsertionSet, which is a way of lazily inserting elements into a
1636         list. This allows the FixupPhase to remain O(N) despite performing
1637         multiple injections in a single basic block. Without the InsertionSet,
1638         each injection would require performing an insertion into a vector,
1639         which is O(N), leading to O(N^2) performance overall. With the
1640         InsertionSet, each injection simply records what insertion would have
1641         been performed, and all insertions are performed at once (via
1642         InsertionSet::execute) after processing of a basic block is completed.
1643
1644         * JavaScriptCore.xcodeproj/project.pbxproj:
1645         * bytecode/PredictedType.h:
1646         (JSC::isActionableIntMutableArrayPrediction):
1647         (JSC):
1648         (JSC::isActionableFloatMutableArrayPrediction):
1649         (JSC::isActionableTypedMutableArrayPrediction):
1650         (JSC::isActionableMutableArrayPrediction):
1651         * dfg/DFGAbstractState.cpp:
1652         (JSC::DFG::AbstractState::execute):
1653         * dfg/DFGCSEPhase.cpp:
1654         (JSC::DFG::CSEPhase::performNodeCSE):
1655         * dfg/DFGCommon.h:
1656         (JSC::DFG::useKindToString):
1657         (DFG):
1658         * dfg/DFGFixupPhase.cpp:
1659         (JSC::DFG::FixupPhase::run):
1660         (JSC::DFG::FixupPhase::fixupBlock):
1661         (FixupPhase):
1662         (JSC::DFG::FixupPhase::fixupNode):
1663         (JSC::DFG::FixupPhase::fixDoubleEdge):
1664         * dfg/DFGGraph.cpp:
1665         (JSC::DFG::Graph::dump):
1666         * dfg/DFGInsertionSet.h: Added.
1667         (DFG):
1668         (Insertion):
1669         (JSC::DFG::Insertion::Insertion):
1670         (JSC::DFG::Insertion::index):
1671         (JSC::DFG::Insertion::element):
1672         (InsertionSet):
1673         (JSC::DFG::InsertionSet::InsertionSet):
1674         (JSC::DFG::InsertionSet::append):
1675         (JSC::DFG::InsertionSet::execute):
1676         * dfg/DFGNodeType.h:
1677         (DFG):
1678         * dfg/DFGPredictionPropagationPhase.cpp:
1679         (JSC::DFG::PredictionPropagationPhase::propagate):
1680         * dfg/DFGSpeculativeJIT.cpp:
1681         (JSC::DFG::SpeculativeJIT::computeValueRecoveryFor):
1682         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
1683         (JSC::DFG::SpeculativeJIT::compileInt32ToDouble):
1684         (DFG):
1685         * dfg/DFGSpeculativeJIT.h:
1686         (SpeculativeJIT):
1687         (JSC::DFG::IntegerOperand::IntegerOperand):
1688         (JSC::DFG::DoubleOperand::DoubleOperand):
1689         (JSC::DFG::JSValueOperand::JSValueOperand):
1690         (JSC::DFG::StorageOperand::StorageOperand):
1691         (JSC::DFG::SpeculateIntegerOperand::SpeculateIntegerOperand):
1692         (JSC::DFG::SpeculateStrictInt32Operand::SpeculateStrictInt32Operand):
1693         (JSC::DFG::SpeculateDoubleOperand::SpeculateDoubleOperand):
1694         (JSC::DFG::SpeculateCellOperand::SpeculateCellOperand):
1695         (JSC::DFG::SpeculateBooleanOperand::SpeculateBooleanOperand):
1696         * dfg/DFGSpeculativeJIT32_64.cpp:
1697         (JSC::DFG::SpeculativeJIT::compile):
1698         * dfg/DFGSpeculativeJIT64.cpp:
1699         (JSC::DFG::SpeculativeJIT::compile):
1700
1701 2012-03-25  Filip Pizlo  <fpizlo@apple.com>
1702
1703         DFGOperands should be moved out of the DFG and into bytecode
1704         https://bugs.webkit.org/show_bug.cgi?id=82151
1705
1706         Reviewed by Dan Bernstein.
1707
1708         * GNUmakefile.list.am:
1709         * JavaScriptCore.xcodeproj/project.pbxproj:
1710         * bytecode/Operands.h: Copied from Source/JavaScriptCore/dfg/DFGOperands.h.
1711         * dfg/DFGBasicBlock.h:
1712         * dfg/DFGNode.h:
1713         * dfg/DFGOSREntry.h:
1714         * dfg/DFGOSRExit.h:
1715         * dfg/DFGOperands.h: Removed.
1716         * dfg/DFGVariableAccessData.h:
1717
1718 2012-03-24  Filip Pizlo  <fpizlo@apple.com>
1719
1720         DFG 64-bit Branch implementation should not be creating a JSValueOperand that
1721         it isn't going to use
1722         https://bugs.webkit.org/show_bug.cgi?id=82136
1723
1724         Reviewed by Geoff Garen.
1725
1726         * dfg/DFGSpeculativeJIT64.cpp:
1727         (JSC::DFG::SpeculativeJIT::emitBranch):
1728
1729 2012-03-24  Kevin Ollivier  <kevino@theolliviers.com>
1730
1731         [wx] Unreviewed. Fix the build after WTF move.
1732
1733         * wscript:
1734
1735 2012-03-23  Filip Pizlo  <fpizlo@apple.com>
1736
1737         DFG double voting may be overzealous in the case of variables that end up
1738         being used as integers
1739         https://bugs.webkit.org/show_bug.cgi?id=82008
1740
1741         Reviewed by Oliver Hunt.
1742         
1743         Cleaned up propagation, making the intent more explicit in most places.
1744         Back-propagate NodeUsedAsInt for cases where a node was used in a context
1745         that is known to strongly prefer integers.
1746
1747         * dfg/DFGByteCodeParser.cpp:
1748         (JSC::DFG::ByteCodeParser::handleCall):
1749         (JSC::DFG::ByteCodeParser::parseBlock):
1750         * dfg/DFGGraph.cpp:
1751         (JSC::DFG::Graph::dumpCodeOrigin):
1752         (JSC::DFG::Graph::dump):
1753         * dfg/DFGGraph.h:
1754         (Graph):
1755         * dfg/DFGNodeFlags.cpp:
1756         (JSC::DFG::nodeFlagsAsString):
1757         * dfg/DFGNodeFlags.h:
1758         (DFG):
1759         * dfg/DFGPredictionPropagationPhase.cpp:
1760         (JSC::DFG::PredictionPropagationPhase::run):
1761         (JSC::DFG::PredictionPropagationPhase::propagate):
1762         (PredictionPropagationPhase):
1763         (JSC::DFG::PredictionPropagationPhase::mergeDefaultFlags):
1764         (JSC::DFG::PredictionPropagationPhase::vote):
1765         (JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
1766         (JSC::DFG::PredictionPropagationPhase::fixupNode):
1767         * dfg/DFGVariableAccessData.h:
1768         (JSC::DFG::VariableAccessData::shouldUseDoubleFormatAccordingToVote):
1769
1770 2012-03-24  Filip Pizlo  <fpizlo@apple.com>
1771
1772         DFG::Node::shouldNotSpeculateInteger() should be eliminated
1773         https://bugs.webkit.org/show_bug.cgi?id=82123
1774
1775         Reviewed by Geoff Garen.
1776
1777         * dfg/DFGAbstractState.cpp:
1778         (JSC::DFG::AbstractState::execute):
1779         * dfg/DFGNode.h:
1780         (Node):
1781         * dfg/DFGSpeculativeJIT.cpp:
1782         (JSC::DFG::SpeculativeJIT::compilePutByValForByteArray):
1783         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
1784
1785 2012-03-24  Yong Li  <yoli@rim.com>
1786
1787         Increase getByIdSlowCase ConstantSpace/InstructionSpace for CPU(ARM_TRADITIONAL)
1788         https://bugs.webkit.org/show_bug.cgi?id=81521
1789
1790         Increase sequenceGetByIdSlowCaseConstantSpace and sequenceGetByIdSlowCaseInstructionSpace
1791         for CPU(ARM_TRADITIONAL) to fit actual need.
1792
1793         Reviewed by Oliver Hunt.
1794
1795         * jit/JIT.h:
1796         (JIT):
1797
1798 2012-03-23  Filip Pizlo  <fpizlo@apple.com>
1799
1800         DFG Fixup should be able to short-circuit trivial ValueToInt32's
1801         https://bugs.webkit.org/show_bug.cgi?id=82030
1802
1803         Reviewed by Michael Saboff.
1804         
1805         Takes the fixup() method of the prediction propagation phase and makes it
1806         into its own phase. Adds the ability to short-circuit trivial ValueToInt32
1807         nodes, and mark pure ValueToInt32's as such.
1808
1809         * CMakeLists.txt:
1810         * GNUmakefile.list.am:
1811         * JavaScriptCore.xcodeproj/project.pbxproj:
1812         * Target.pri:
1813         * dfg/DFGByteCodeParser.cpp:
1814         (JSC::DFG::ByteCodeParser::makeSafe):
1815         (JSC::DFG::ByteCodeParser::handleCall):
1816         (JSC::DFG::ByteCodeParser::parseBlock):
1817         * dfg/DFGCommon.h:
1818         * dfg/DFGDriver.cpp:
1819         (JSC::DFG::compile):
1820         * dfg/DFGFixupPhase.cpp: Added.
1821         (DFG):
1822         (FixupPhase):
1823         (JSC::DFG::FixupPhase::FixupPhase):
1824         (JSC::DFG::FixupPhase::run):
1825         (JSC::DFG::FixupPhase::fixupNode):
1826         (JSC::DFG::FixupPhase::fixIntEdge):
1827         (JSC::DFG::performFixup):
1828         * dfg/DFGFixupPhase.h: Added.
1829         (DFG):
1830         * dfg/DFGPredictionPropagationPhase.cpp:
1831         (JSC::DFG::PredictionPropagationPhase::run):
1832         (PredictionPropagationPhase):
1833
1834 2012-03-23  Mark Hahnenberg  <mhahnenberg@apple.com>
1835
1836         tryReallocate could break the zero-ed memory invariant of CopiedBlocks
1837         https://bugs.webkit.org/show_bug.cgi?id=82087
1838
1839         Reviewed by Filip Pizlo.
1840
1841         Removing this optimization turned out to be ~1% regression on kraken, so I simply 
1842         undid the modification to the current block if we fail.
1843
1844         * heap/CopiedSpace.cpp:
1845         (JSC::CopiedSpace::tryReallocate): Undid the reset in the CopiedAllocator if we fail 
1846         to reallocate from the current block.
1847
1848 2012-03-23  Alexey Proskuryakov  <ap@apple.com>
1849
1850         [Mac] No need for platform-specific ENABLE_BLOB values
1851         https://bugs.webkit.org/show_bug.cgi?id=82102
1852
1853         Reviewed by David Kilzer.
1854
1855         * Configurations/FeatureDefines.xcconfig:
1856
1857 2012-03-23  Michael Saboff  <msaboff@apple.com>
1858
1859         DFG::compileValueToInt32 Sometime Generates GPR to FPR reg back to GPR
1860         https://bugs.webkit.org/show_bug.cgi?id=81805
1861
1862         Reviewed by Filip Pizlo.
1863
1864         Added SpeculativeJIT::checkGeneratedType() to determine the current format
1865         of an operand.  Used that information in SpeculativeJIT::compileValueToInt32
1866         to generate code that will use integer and JSValue types in integer
1867         format directly without a conversion to double.
1868
1869         * JavaScriptCore.xcodeproj/project.pbxproj:
1870         * dfg/DFGSpeculativeJIT.cpp:
1871         (JSC::DFG::SpeculativeJIT::checkGeneratedType):
1872         (DFG):
1873         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
1874         * dfg/DFGSpeculativeJIT.h:
1875         (DFG):
1876         (SpeculativeJIT):
1877
1878 2012-03-23  Steve Falkenburg  <sfalken@apple.com>
1879
1880         Update Apple Windows build files for WTF move
1881         https://bugs.webkit.org/show_bug.cgi?id=82069
1882
1883         Reviewed by Jessie Berlin.
1884
1885         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Removed WTF and WTFGenerated.
1886
1887 2012-03-23  Dean Jackson  <dino@apple.com>
1888
1889         Disable CSS_SHADERS in Apple builds
1890         https://bugs.webkit.org/show_bug.cgi?id=81996
1891
1892         Reviewed by Simon Fraser.
1893
1894         Remove ENABLE_CSS_SHADERS from FeatureDefines. It's now in Platform.h.
1895
1896         * Configurations/FeatureDefines.xcconfig:
1897
1898 2012-03-23  Gavin Barraclough  <barraclough@apple.com>
1899
1900         RexExp constructor last match properties should not rely on previous ovector
1901         https://bugs.webkit.org/show_bug.cgi?id=82077
1902
1903         Reviewed by Oliver Hunt.
1904
1905         This change simplifies matching, and will enable subpattern results to be fully lazily generated in the future.
1906
1907         This patch changes the scheme used to lazily generate the last match properties of the RegExp object.
1908         Instead of relying on the results in the ovector, we can instead lazily generate the subpatters using
1909         a RegExpMatchesArray. To do so we just need to store the input, the regexp matched, and the match
1910         location (the MatchResult). When the match is accessed or the input is set, we reify results. We use
1911         a special value of setting the saved result to MatchResult::failed() to indicated that we're in a
1912         reified state. This means that next time a match is performed, the store of the result will
1913         automatically blow away the reified value.
1914
1915         * JavaScriptCore.xcodeproj/project.pbxproj:
1916             - Added new files.
1917         * runtime/RegExp.cpp:
1918         (JSC::RegExpFunctionalTestCollector::outputOneTest):
1919             - changed 'subPattern' -> 'subpattern' (there was a mix in JSC, 'subpattern' was more common).
1920         * runtime/RegExpCachedResult.cpp: Added.
1921         (JSC::RegExpCachedResult::visitChildren):
1922         (JSC::RegExpCachedResult::lastResult):
1923         (JSC::RegExpCachedResult::setInput):
1924             - New methods, mark GC objects, lazily create the matches array, and record a user provided input (via assignment to RegExp.inupt).
1925         * runtime/RegExpCachedResult.h: Added.
1926         (RegExpCachedResult):
1927             - Added new class.
1928         (JSC::RegExpCachedResult::RegExpCachedResult):
1929         (JSC::RegExpCachedResult::record):
1930         (JSC::RegExpCachedResult::input):
1931             - Initialize the object, record the result of a RegExp match, access the stored input property.
1932         * runtime/RegExpConstructor.cpp:
1933         (JSC::RegExpConstructor::RegExpConstructor):
1934             - Initialize m_result/m_multiline properties.
1935         (JSC::RegExpConstructor::visitChildren):
1936             - Make sure the cached results (or lazy source for them) are marked.
1937         (JSC::RegExpConstructor::getBackref):
1938         (JSC::RegExpConstructor::getLastParen):
1939         (JSC::RegExpConstructor::getLeftContext):
1940         (JSC::RegExpConstructor::getRightContext):
1941             - Moved from RegExpConstructor, moved to RegExpCachedResult, and using new caching scheme.
1942         (JSC::regExpConstructorInput):
1943         (JSC::setRegExpConstructorInput):
1944             - Changed to use RegExpCachedResult.
1945         * runtime/RegExpConstructor.h:
1946         (JSC::RegExpConstructor::create):
1947         (RegExpConstructor):
1948         (JSC::RegExpConstructor::setMultiline):
1949         (JSC::RegExpConstructor::multiline):
1950             - Move multiline property onto the constructor object; it is not affected by the last match.
1951         (JSC::RegExpConstructor::setInput):
1952         (JSC::RegExpConstructor::input):
1953             - These defer to RegExpCachedResult.
1954         (JSC::RegExpConstructor::performMatch):
1955         * runtime/RegExpMatchesArray.cpp: Added.
1956         (JSC::RegExpMatchesArray::visitChildren):
1957             - Eeeep! added missing visitChildren!
1958         (JSC::RegExpMatchesArray::finishCreation):
1959         (JSC::RegExpMatchesArray::reifyAllProperties):
1960         (JSC::RegExpMatchesArray::reifyMatchProperty):
1961             - Moved from RegExpConstructor.cpp.
1962         (JSC::RegExpMatchesArray::leftContext):
1963         (JSC::RegExpMatchesArray::rightContext):
1964             - Since the match start/
1965         * runtime/RegExpMatchesArray.h:
1966         (RegExpMatchesArray):
1967             - Declare new methods & structure flags.
1968         * runtime/RegExpObject.cpp:
1969         (JSC::RegExpObject::match):
1970             - performMatch now requires the JSString input, to cache.
1971         * runtime/StringPrototype.cpp:
1972         (JSC::removeUsingRegExpSearch):
1973         (JSC::replaceUsingRegExpSearch):
1974         (JSC::stringProtoFuncMatch):
1975         (JSC::stringProtoFuncSearch):
1976             - performMatch now requires the JSString input, to cache.
1977
1978 2012-03-23  Tony Chang  <tony@chromium.org>
1979
1980         [chromium] rename newwtf target back to wtf
1981         https://bugs.webkit.org/show_bug.cgi?id=82064
1982
1983         Reviewed by Adam Barth.
1984
1985         * JavaScriptCore.gyp/JavaScriptCore.gyp:
1986
1987 2012-03-23  Mark Hahnenberg  <mhahnenberg@apple.com>
1988
1989         Simplify memory usage tracking in CopiedSpace
1990         https://bugs.webkit.org/show_bug.cgi?id=80705
1991
1992         Reviewed by Filip Pizlo.
1993
1994         * heap/CopiedAllocator.h:
1995         (CopiedAllocator): Rename currentUtilization to currentSize.
1996         (JSC::CopiedAllocator::currentCapacity):
1997         * heap/CopiedBlock.h:
1998         (CopiedBlock):
1999         (JSC::CopiedBlock::payload): Move the implementation of payload() out of the class
2000         declaration.
2001         (JSC):
2002         (JSC::CopiedBlock::size): Add new function to calculate the block's size.
2003         (JSC::CopiedBlock::capacity): Ditto for capacity.
2004         * heap/CopiedSpace.cpp:
2005         (JSC::CopiedSpace::CopiedSpace): Remove old bogus memory stats fields and add a new
2006         field for the water mark.
2007         (JSC::CopiedSpace::init):
2008         (JSC::CopiedSpace::tryAllocateSlowCase): When we fail to allocate from the current 
2009         block, we need to update our current water mark with the size of the block.
2010         (JSC::CopiedSpace::tryAllocateOversize): When we allocate a new oversize block, we 
2011         need to update our current water mark with the size of the used portion of the block.
2012         (JSC::CopiedSpace::tryReallocate): We don't need to update the water mark when 
2013         reallocating because it will either get accounted for when we fill up the block later 
2014         in the case of being able to reallocate in the current block or it will get picked up 
2015         immediately because we'll have to get a new block.
2016         (JSC::CopiedSpace::tryReallocateOversize): We do, however, need to update in when 
2017         realloc-ing an oversize block because we deallocate the old block and allocate a brand 
2018         new one.
2019         (JSC::CopiedSpace::doneFillingBlock): Update the water mark as blocks are returned to 
2020         the CopiedSpace by the SlotVisitors.
2021         (JSC::CopiedSpace::doneCopying): Add in any pinned blocks to the water mark.
2022         (JSC::CopiedSpace::getFreshBlock): We use the Heap's new function to tell us whether or 
2023         not we should collect now instead of doing the calculation ourself.
2024         (JSC::CopiedSpace::destroy):
2025         (JSC):
2026         (JSC::CopiedSpace::size): Manually calculate the size of the CopiedSpace, similar to how 
2027         MarkedSpace does.
2028         (JSC::CopiedSpace::capacity): Ditto for capacity.
2029         * heap/CopiedSpace.h:
2030         (JSC::CopiedSpace::waterMark):
2031         (CopiedSpace):
2032         * heap/CopiedSpaceInlineMethods.h:
2033         (JSC::CopiedSpace::startedCopying): Reset water mark to 0 when we start copying during a 
2034         collection.
2035         (JSC::CopiedSpace::allocateNewBlock):
2036         (JSC::CopiedSpace::fitsInBlock):
2037         (JSC::CopiedSpace::allocateFromBlock):
2038         * heap/Heap.cpp:
2039         (JSC::Heap::size): Incorporate size of CopiedSpace into the total size of the Heap.
2040         (JSC::Heap::capacity): Ditto for capacity.
2041         (JSC::Heap::collect):
2042         * heap/Heap.h:
2043         (Heap):
2044         (JSC::Heap::shouldCollect): New function for other sub-parts of the Heap to use to 
2045         determine whether they should initiate a collection or continue to allocate new blocks.
2046         (JSC):
2047         (JSC::Heap::waterMark): Now is the sum of the water marks of the two sub-parts of the
2048         Heap (MarkedSpace and CopiedSpace).
2049         * heap/MarkedAllocator.cpp:
2050         (JSC::MarkedAllocator::allocateSlowCase): Changed to use the Heap's new shouldCollect() function.
2051
2052 2012-03-23  Ryosuke Niwa  <rniwa@webkit.org>
2053
2054         BitVector::resizeOutOfLine doesn't memset when converting an inline buffer
2055         https://bugs.webkit.org/show_bug.cgi?id=82012
2056
2057         Reviewed by Filip Pizlo.
2058
2059         Initialize out-of-line buffers while extending an inline buffer. Also export symbols to be used in WebCore.
2060
2061         * wtf/BitVector.cpp:
2062         (WTF::BitVector::resizeOutOfLine):
2063         * wtf/BitVector.h:
2064         (BitVector):
2065         (OutOfLineBits):
2066
2067 2012-03-22  Michael Saboff  <msaboff@apple.com>
2068
2069         ExecutableAllocator::memoryPressureMultiplier() might can return NaN
2070         https://bugs.webkit.org/show_bug.cgi?id=82002
2071
2072         Reviewed by Filip Pizlo.
2073
2074         Guard against divide by zero and then make sure the return
2075         value is >= 1.0.
2076
2077         * jit/ExecutableAllocator.cpp:
2078         (JSC::ExecutableAllocator::memoryPressureMultiplier):
2079         * jit/ExecutableAllocatorFixedVMPool.cpp:
2080         (JSC::ExecutableAllocator::memoryPressureMultiplier):
2081
2082 2012-03-22  Jessie Berlin  <jberlin@apple.com>
2083
2084         Windows build fix after r111778.
2085
2086         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2087         Don't include and try to build files owned by WTF.
2088         Also, let VS have its way with the vcproj in terms of file ordering.
2089
2090 2012-03-22  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2091
2092         [CMake] Unreviewed build fix after r111778.
2093
2094         * CMakeLists.txt: Move ${WTF_DIR} after ${JAVASCRIPTCORE_DIR} in
2095         the include paths so that the right config.h is used.
2096
2097 2012-03-22  Tony Chang  <tony@chromium.org>
2098
2099         Unreviewed, fix chromium build after wtf move.
2100
2101         Remove old wtf_config and wtf targets.
2102
2103         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2104
2105 2012-03-22  Martin Robinson  <mrobinson@igalia.com>
2106
2107         Fixed the GTK+ WTF/JavaScriptCore build after r111778.
2108
2109         * GNUmakefile.list.am: Removed an extra trailing backslash.
2110
2111 2012-03-22  Mark Rowe  <mrowe@apple.com>
2112
2113         Fix the build.
2114
2115         * Configurations/JavaScriptCore.xcconfig: Tell the linker to pull in all members from static libraries
2116         rather than only those that contain symbols that JavaScriptCore itself uses.
2117         * JavaScriptCore.xcodeproj/project.pbxproj: Remove some bogus settings that crept in to the Xcode project.
2118
2119 2012-03-22  Filip Pizlo  <fpizlo@apple.com>
2120
2121         DFG NodeFlags has some duplicate code and naming issues
2122         https://bugs.webkit.org/show_bug.cgi?id=81975
2123
2124         Reviewed by Gavin Barraclough.
2125         
2126         Removed most references to "ArithNodeFlags" since those are now just part
2127         of the node flags. Fixed some renaming goofs (EdgedAsNum is once again
2128         NodeUsedAsNum). Got rid of setArithNodeFlags() and mergeArithNodeFlags()
2129         because the former was never called and the latter did the same things as
2130         mergeFlags().
2131
2132         * dfg/DFGByteCodeParser.cpp:
2133         (JSC::DFG::ByteCodeParser::makeSafe):
2134         (JSC::DFG::ByteCodeParser::makeDivSafe):
2135         (JSC::DFG::ByteCodeParser::handleIntrinsic):
2136         * dfg/DFGGraph.cpp:
2137         (JSC::DFG::Graph::dump):
2138         * dfg/DFGNode.h:
2139         (JSC::DFG::Node::arithNodeFlags):
2140         (Node):
2141         * dfg/DFGNodeFlags.cpp:
2142         (JSC::DFG::nodeFlagsAsString):
2143         * dfg/DFGNodeFlags.h:
2144         (DFG):
2145         (JSC::DFG::nodeUsedAsNumber):
2146         * dfg/DFGPredictionPropagationPhase.cpp:
2147         (JSC::DFG::PredictionPropagationPhase::propagate):
2148         (JSC::DFG::PredictionPropagationPhase::mergeDefaultArithFlags):
2149
2150 2012-03-22  Eric Seidel  <eric@webkit.org>
2151
2152         Actually move WTF files to their new home
2153         https://bugs.webkit.org/show_bug.cgi?id=81844
2154
2155         Unreviewed.  The details of the port-specific changes
2156         have been seen by contributors from those ports, but
2157         the whole 5MB change isn't very reviewable as-is.
2158
2159         * GNUmakefile.am:
2160         * GNUmakefile.list.am:
2161         * JSCTypedArrayStubs.h:
2162         * JavaScriptCore.gypi:
2163         * JavaScriptCore.xcodeproj/project.pbxproj:
2164         * jsc.cpp:
2165
2166 2012-03-22  Kevin Ollivier  <kevino@theolliviers.com>
2167
2168         [wx] Unreviewed. Adding Source/WTF to the build.
2169
2170         * wscript:
2171
2172 2012-03-22  Gavin Barraclough  <barraclough@apple.com>
2173
2174         Add JSValue::isFunction
2175         https://bugs.webkit.org/show_bug.cgi?id=81935
2176
2177         Reviewed by Geoff Garen.
2178
2179         This would be useful in the WebCore bindings code.
2180         Also, remove asFunction, replace with jsCast<JSFunction*>.
2181
2182         * API/JSContextRef.cpp:
2183         * debugger/Debugger.cpp:
2184         * debugger/DebuggerCallFrame.cpp:
2185         (JSC::DebuggerCallFrame::functionName):
2186         * dfg/DFGGraph.h:
2187         (JSC::DFG::Graph::valueOfFunctionConstant):
2188         * dfg/DFGOperations.cpp:
2189         * interpreter/CallFrame.cpp:
2190         (JSC::CallFrame::isInlineCallFrameSlow):
2191         * interpreter/Interpreter.cpp:
2192         (JSC::Interpreter::privateExecute):
2193         * jit/JITStubs.cpp:
2194         (JSC::DEFINE_STUB_FUNCTION):
2195         (JSC::jitCompileFor):
2196         (JSC::lazyLinkFor):
2197         * llint/LLIntSlowPaths.cpp:
2198         (JSC::LLInt::traceFunctionPrologue):
2199         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2200         (JSC::LLInt::setUpCall):
2201         * runtime/Arguments.h:
2202         (JSC::Arguments::finishCreation):
2203         * runtime/ArrayPrototype.cpp:
2204         (JSC::arrayProtoFuncFilter):
2205         (JSC::arrayProtoFuncMap):
2206         (JSC::arrayProtoFuncEvery):
2207         (JSC::arrayProtoFuncForEach):
2208         (JSC::arrayProtoFuncSome):
2209         (JSC::arrayProtoFuncReduce):
2210         (JSC::arrayProtoFuncReduceRight):
2211         * runtime/CommonSlowPaths.h:
2212         (JSC::CommonSlowPaths::arityCheckFor):
2213         * runtime/Executable.h:
2214         (JSC::FunctionExecutable::compileFor):
2215         (JSC::FunctionExecutable::compileOptimizedFor):
2216         * runtime/FunctionPrototype.cpp:
2217         (JSC::functionProtoFuncToString):
2218         * runtime/JSArray.cpp:
2219         (JSC::JSArray::sort):
2220         * runtime/JSFunction.cpp:
2221         (JSC::JSFunction::argumentsGetter):
2222         (JSC::JSFunction::callerGetter):
2223         (JSC::JSFunction::lengthGetter):
2224         * runtime/JSFunction.h:
2225         (JSC):
2226         (JSC::asJSFunction):
2227         (JSC::JSValue::isFunction):
2228         * runtime/JSGlobalData.cpp:
2229         (WTF::Recompiler::operator()):
2230         (JSC::JSGlobalData::releaseExecutableMemory):
2231         * runtime/JSValue.h:
2232         * runtime/StringPrototype.cpp:
2233         (JSC::replaceUsingRegExpSearch):
2234
2235 2012-03-21  Filip Pizlo  <fpizlo@apple.com>
2236
2237         DFG speculation on booleans should be rationalized
2238         https://bugs.webkit.org/show_bug.cgi?id=81840
2239
2240         Reviewed by Gavin Barraclough.
2241         
2242         This removes isKnownBoolean() and replaces it with AbstractState-based
2243         optimization, and cleans up the control flow in code gen methods for
2244         Branch and LogicalNot. Also fixes a goof in Node::shouldSpeculateNumber,
2245         and removes isKnownNotBoolean() since that method appeared to be a
2246         helper used solely by 32_64's speculateBooleanOperation().
2247         
2248         This is performance-neutral.
2249
2250         * dfg/DFGAbstractState.cpp:
2251         (JSC::DFG::AbstractState::execute):
2252         * dfg/DFGNode.h:
2253         (JSC::DFG::Node::shouldSpeculateNumber):
2254         * dfg/DFGSpeculativeJIT.cpp:
2255         (DFG):
2256         * dfg/DFGSpeculativeJIT.h:
2257         (SpeculativeJIT):
2258         * dfg/DFGSpeculativeJIT32_64.cpp:
2259         (JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):
2260         (JSC::DFG::SpeculativeJIT::compileLogicalNot):
2261         (JSC::DFG::SpeculativeJIT::emitBranch):
2262         (JSC::DFG::SpeculativeJIT::compile):
2263         * dfg/DFGSpeculativeJIT64.cpp:
2264         (JSC::DFG::SpeculativeJIT::compileLogicalNot):
2265         (JSC::DFG::SpeculativeJIT::emitBranch):
2266         (JSC::DFG::SpeculativeJIT::compile):
2267
2268 2012-03-21  Mark Rowe  <mrowe@apple.com>
2269
2270         Fix the build.
2271
2272         * wtf/MetaAllocator.h:
2273         (MetaAllocator): Export the destructor.
2274
2275 2012-03-21  Eric Seidel  <eric@webkit.org>
2276
2277         Fix remaining WTF includes in JavaScriptCore in preparation for moving WTF headers out of JavaScriptCore
2278         https://bugs.webkit.org/show_bug.cgi?id=81834
2279
2280         Reviewed by Adam Barth.
2281
2282         * jsc.cpp:
2283         * os-win32/WinMain.cpp:
2284         * runtime/JSDateMath.cpp:
2285         * runtime/TimeoutChecker.cpp:
2286         * testRegExp.cpp:
2287         * tools/CodeProfiling.cpp:
2288
2289 2012-03-21  Eric Seidel  <eric@webkit.org>
2290
2291         WTF::MetaAllocator has a weak vtable (discovered when building wtf as a static library)
2292         https://bugs.webkit.org/show_bug.cgi?id=81838
2293
2294         Reviewed by Geoffrey Garen.
2295
2296         My understanding is that weak vtables happen when the compiler/linker cannot
2297         determine which compilation unit should constain the vtable.  In this case
2298         because there were only pure virtual functions as well as an "inline"
2299         virtual destructor (thus the virtual destructor was defined in many compilation
2300         units).  Since you can't actually "inline" a virtual function (it still has to
2301         bounce through the vtable), the "inline" on this virutal destructor doesn't
2302         actually help performance, and is only serving to confuse the compiler here.
2303         I've moved the destructor implementation to the .cpp file, thus making
2304         it clear to the compiler where the vtable should be stored, and solving the error.
2305
2306         * wtf/MetaAllocator.cpp:
2307         (WTF::MetaAllocator::~MetaAllocator):
2308         (WTF):
2309         * wtf/MetaAllocator.h:
2310
2311 2012-03-20  Gavin Barraclough  <barraclough@apple.com>
2312
2313         RegExpMatchesArray should not copy the ovector
2314         https://bugs.webkit.org/show_bug.cgi?id=81742
2315
2316         Reviewed by Michael Saboff.
2317
2318         Currently, all RegExpMatchesArray object contain Vector<int, 32>, used to hold any sub-pattern results.
2319         This makes allocation/construction/destruction of these objects more expensive. Instead, just store the
2320         main match, and recreate the sub-pattern ranges only if necessary (these are often only used for grouping,
2321         and the results never accessed).
2322         If the main match (index 0) of the RegExpMatchesArray is accessed, reify that value alone.
2323
2324         * dfg/DFGOperations.cpp:
2325             - RegExpObject match renamed back to test (test returns a bool).
2326         * runtime/RegExpConstructor.cpp:
2327         (JSC):
2328             - Removed RegExpResult, RegExpMatchesArray constructor, destroy method.
2329         (JSC::RegExpMatchesArray::finishCreation):
2330             - Removed RegExpConstructorPrivate parameter.
2331         (JSC::RegExpMatchesArray::reifyAllProperties):
2332             - (Was fillArrayInstance) Reify all properties of the RegExpMatchesArray.
2333             If there are sub-pattern properties, the RegExp is re-run to generate their values.
2334         (JSC::RegExpMatchesArray::reifyMatchProperty):
2335             - Reify just the match (index 0) property of the RegExpMatchesArray.
2336         * runtime/RegExpConstructor.h:
2337         (RegExpConstructor):
2338         (JSC::RegExpConstructor::performMatch):
2339             - performMatch now returns a MatchResult, rather than using out-parameters.
2340         * runtime/RegExpMatchesArray.h:
2341         (JSC::RegExpMatchesArray::RegExpMatchesArray):
2342             - Moved from .cpp, stores the input/regExp/result to use when lazily reifying properties.
2343         (RegExpMatchesArray):
2344         (JSC::RegExpMatchesArray::create):
2345             - Now passed the input string matched against, the RegExp, and the MatchResult.
2346         (JSC::RegExpMatchesArray::reifyAllPropertiesIfNecessary):
2347         (JSC::RegExpMatchesArray::reifyMatchPropertyIfNecessary):
2348             - Helpers to conditionally reify properties.
2349         (JSC::RegExpMatchesArray::getOwnPropertySlot):
2350         (JSC::RegExpMatchesArray::getOwnPropertySlotByIndex):
2351         (JSC::RegExpMatchesArray::getOwnPropertyDescriptor):
2352         (JSC::RegExpMatchesArray::put):
2353         (JSC::RegExpMatchesArray::putByIndex):
2354         (JSC::RegExpMatchesArray::deleteProperty):
2355         (JSC::RegExpMatchesArray::deletePropertyByIndex):
2356         (JSC::RegExpMatchesArray::getOwnPropertyNames):
2357         (JSC::RegExpMatchesArray::defineOwnProperty):
2358             - Changed to use reifyAllPropertiesIfNecessary/reifyMatchPropertyIfNecessary
2359             (getOwnPropertySlotByIndex calls reifyMatchPropertyIfNecessary if index is 0).
2360         * runtime/RegExpObject.cpp:
2361         (JSC::RegExpObject::exec):
2362         (JSC::RegExpObject::match):
2363             - match now returns a MatchResult.
2364         * runtime/RegExpObject.h:
2365         (JSC::MatchResult::MatchResult):
2366             - Added the result of a match is a start & end tuple.
2367         (JSC::MatchResult::failed):
2368             - A failure is indicated by (notFound, 0).
2369         (JSC::MatchResult::operator bool):
2370             - Evaluates to false if the match failed.
2371         (JSC::MatchResult::empty):
2372             - Evaluates to true if the match succeeded with length 0.
2373         (JSC::RegExpObject::test):
2374             - Now returns a bool.
2375         * runtime/RegExpPrototype.cpp:
2376         (JSC::regExpProtoFuncTest):
2377             - RegExpObject match renamed back to test (test returns a bool).
2378         * runtime/StringPrototype.cpp:
2379         (JSC::removeUsingRegExpSearch):
2380         (JSC::replaceUsingRegExpSearch):
2381         (JSC::stringProtoFuncMatch):
2382         (JSC::stringProtoFuncSearch):
2383             - performMatch now returns a MatchResult, rather than using out-parameters.
2384
2385 2012-03-21  Hojong Han  <hojong.han@samsung.com>
2386
2387         Fix out of memory by allowing overcommit
2388         https://bugs.webkit.org/show_bug.cgi?id=81743
2389
2390         Reviewed by Geoffrey Garen.
2391
2392         Garbage collection is not triggered and new blocks are added
2393         because overcommit is allowed by MAP_NORESERVE flag when high water mark is big enough.
2394
2395         * wtf/OSAllocatorPosix.cpp:
2396         (WTF::OSAllocator::reserveAndCommit):
2397
2398 2012-03-21  Jessie Berlin  <jberlin@apple.com>
2399
2400         More Windows build fixing.
2401
2402         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2403         Fix the order of the include directories to look in include/private first before looking
2404         in include/private/JavaScriptCore.
2405         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops:
2406         Look in the Production output directory (where the wtf headers will be). This is the same
2407         thing that is done for jsc and testRegExp in ReleasePGO.
2408
2409 2012-03-21  Jessie Berlin  <jberlin@apple.com>
2410
2411         WTF headers should be in $(ConfigurationBuildDir)\include\private\wtf, not
2412         $(ConfigurationBuildDir)\include\private\JavaScriptCore\wtf.
2413         https://bugs.webkit.org/show_bug.cgi?id=81739
2414
2415         Reviewed by Dan Bernstein.
2416
2417         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2418         Look for AtomicString.cpp, StringBuilder.cpp, StringImpl.cpp, and WTFString.cpp in the wtf
2419         subdirectory of the build output, not the JavaScriptCore/wtf subdirectory.
2420         * JavaScriptCore.vcproj/testRegExp/testRegExp.vcproj:
2421         Ditto.
2422
2423         * JavaScriptCore.vcproj/testRegExp/testRegExpReleasePGO.vsprops:
2424         Get the headers for those 4 files from the wtf subdirectory of the build output, not the
2425         JavaScriptCore/wtf subdirectory.
2426         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops:
2427         Ditto.
2428
2429 2012-03-20  Eric Seidel  <eric@webkit.org>
2430
2431         Move wtf/Platform.h from JavaScriptCore to Source/WTF/wtf
2432         https://bugs.webkit.org/show_bug.cgi?id=80911
2433
2434         Reviewed by Adam Barth.
2435
2436         Update the various build systems to depend on Source/WTF headers
2437         as well as remove references to Platform.h (since it's now moved).
2438
2439         * CMakeLists.txt:
2440         * JavaScriptCore.pri:
2441         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
2442         * JavaScriptCore.xcodeproj/project.pbxproj:
2443         * wtf/CMakeLists.txt:
2444
2445 2012-03-20  Filip Pizlo  <fpizlo@apple.com>
2446
2447         op_mod fails on many interesting corner cases
2448         https://bugs.webkit.org/show_bug.cgi?id=81648
2449
2450         Reviewed by Oliver Hunt.
2451         
2452         Removed most strength reduction for op_mod, and fixed the integer handling
2453         to do the right thing for corner cases. Oddly, this revealed bugs in OSR,
2454         which this patch also fixes.
2455         
2456         This patch is performance neutral on all of the major benchmarks we track.
2457
2458         * dfg/DFGOperations.cpp:
2459         * dfg/DFGOperations.h:
2460         * dfg/DFGSpeculativeJIT.cpp:
2461         (DFG):
2462         (JSC::DFG::SpeculativeJIT::compileSoftModulo):
2463         (JSC::DFG::SpeculativeJIT::compileArithMod):
2464         * jit/JIT.h:
2465         (JIT):
2466         * jit/JITArithmetic.cpp:
2467         (JSC):
2468         (JSC::JIT::emit_op_mod):
2469         (JSC::JIT::emitSlow_op_mod):
2470         * jit/JITArithmetic32_64.cpp:
2471         (JSC::JIT::emit_op_mod):
2472         (JSC::JIT::emitSlow_op_mod):
2473         * jit/JITOpcodes32_64.cpp:
2474         (JSC::JIT::privateCompileCTIMachineTrampolines):
2475         (JSC):
2476         * jit/JITStubs.h:
2477         (TrampolineStructure):
2478         (JSC::JITThunks::ctiNativeConstruct):
2479         * llint/LowLevelInterpreter64.asm:
2480         * wtf/Platform.h:
2481         * wtf/SimpleStats.h:
2482         (WTF::SimpleStats::variance):
2483
2484 2012-03-20  Steve Falkenburg  <sfalken@apple.com>
2485
2486         Windows (make based) build fix.
2487         <rdar://problem/11069015>
2488
2489         * JavaScriptCore.vcproj/JavaScriptCore.make: devenv /rebuild doesn't work with JavaScriptCore.vcproj. Use /clean and /build instead.
2490
2491 2012-03-20  Steve Falkenburg  <sfalken@apple.com>
2492
2493         Move WTF-related Windows project files out of JavaScriptCore
2494         https://bugs.webkit.org/show_bug.cgi?id=80680
2495
2496         This change only moves the vcproj and related files from JavaScriptCore/JavaScriptCore.vcproj/WTF.
2497         It does not move any source code. This is in preparation for the WTF source move out of
2498         JavaScriptCore.
2499
2500         Reviewed by Jessie Berlin.
2501
2502         * JavaScriptCore.vcproj/JavaScriptCore.sln:
2503         * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln:
2504         * JavaScriptCore.vcproj/WTF: Removed.
2505         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Removed.
2506         * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: Removed.
2507         * JavaScriptCore.vcproj/WTF/WTFDebug.vsprops: Removed.
2508         * JavaScriptCore.vcproj/WTF/WTFDebugAll.vsprops: Removed.
2509         * JavaScriptCore.vcproj/WTF/WTFDebugCairoCFLite.vsprops: Removed.
2510         * JavaScriptCore.vcproj/WTF/WTFGenerated.make: Removed.
2511         * JavaScriptCore.vcproj/WTF/WTFGenerated.vcproj: Removed.
2512         * JavaScriptCore.vcproj/WTF/WTFGeneratedCommon.vsprops: Removed.
2513         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebug.vsprops: Removed.
2514         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebugAll.vsprops: Removed.
2515         * JavaScriptCore.vcproj/WTF/WTFGeneratedDebugCairoCFLite.vsprops: Removed.
2516         * JavaScriptCore.vcproj/WTF/WTFGeneratedProduction.vsprops: Removed.
2517         * JavaScriptCore.vcproj/WTF/WTFGeneratedRelease.vsprops: Removed.
2518         * JavaScriptCore.vcproj/WTF/WTFGeneratedReleaseCairoCFLite.vsprops: Removed.
2519         * JavaScriptCore.vcproj/WTF/WTFPostBuild.cmd: Removed.
2520         * JavaScriptCore.vcproj/WTF/WTFPreBuild.cmd: Removed.
2521         * JavaScriptCore.vcproj/WTF/WTFProduction.vsprops: Removed.
2522         * JavaScriptCore.vcproj/WTF/WTFRelease.vsprops: Removed.
2523         * JavaScriptCore.vcproj/WTF/WTFReleaseCairoCFLite.vsprops: Removed.
2524         * JavaScriptCore.vcproj/WTF/build-generated-files.sh: Removed.
2525         * JavaScriptCore.vcproj/WTF/copy-files.cmd: Removed.
2526         * JavaScriptCore.vcproj/WTF/work-around-vs-dependency-tracking-bugs.py: Removed.
2527
2528 2012-03-20  Benjamin Poulain  <bpoulain@apple.com>
2529
2530         Cache the type string of JavaScript object
2531         https://bugs.webkit.org/show_bug.cgi?id=81446
2532
2533         Reviewed by Geoffrey Garen.
2534
2535         Instead of creating the JSString every time, we create
2536         lazily the strings in JSGlobalData.
2537
2538         This avoid the construction of the StringImpl and of the JSString,
2539         which gives some performance improvements.
2540
2541         * runtime/CommonIdentifiers.h:
2542         * runtime/JSValue.cpp:
2543         (JSC::JSValue::toStringSlowCase):
2544         * runtime/Operations.cpp:
2545         (JSC::jsTypeStringForValue):
2546         * runtime/SmallStrings.cpp:
2547         (JSC::SmallStrings::SmallStrings):
2548         (JSC::SmallStrings::finalizeSmallStrings):
2549         (JSC::SmallStrings::initialize):
2550         (JSC):
2551         * runtime/SmallStrings.h:
2552         (SmallStrings):
2553
2554 2012-03-20  Oliver Hunt  <oliver@apple.com>
2555
2556         Allow LLINT to work even when executable allocation fails.
2557         https://bugs.webkit.org/show_bug.cgi?id=81693
2558
2559         Reviewed by Gavin Barraclough.
2560
2561         Don't crash if executable allocation fails if we can fall back on LLINT
2562
2563         * jit/ExecutableAllocatorFixedVMPool.cpp:
2564         (JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
2565         * wtf/OSAllocatorPosix.cpp:
2566         (WTF::OSAllocator::reserveAndCommit):
2567
2568 2012-03-20  Csaba Osztrogonác  <ossy@webkit.org>
2569
2570         Division optimizations fail to infer cases of truncated division and mishandle -2147483648/-1
2571         https://bugs.webkit.org/show_bug.cgi?id=81428
2572
2573         32 bit buildfix after r111355.
2574
2575         2147483648 (2^31) isn't valid int literal in ISO C90, because 2147483647 (2^31-1) is the biggest int.
2576         The smallest int is -2147483648 (-2^31) == -2147483647 - 1  == -INT32_MAX-1 == INT32_MIN (stdint.h).
2577
2578         Reviewed by Zoltan Herczeg.
2579
2580         * dfg/DFGSpeculativeJIT.cpp:
2581         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2582
2583 2012-03-19  Jochen Eisinger  <jochen@chromium.org>
2584
2585         Split WTFReportBacktrace into WTFReportBacktrace and WTFPrintBacktrace
2586         https://bugs.webkit.org/show_bug.cgi?id=80983
2587
2588         Reviewed by Darin Adler.
2589
2590         This allows printing a backtrace acquired by an earlier WTFGetBacktrace
2591         call which is useful for local debugging.
2592
2593         * wtf/Assertions.cpp:
2594         * wtf/Assertions.h:
2595
2596 2012-03-19  Benjamin Poulain  <benjamin@webkit.org>
2597
2598         Do not copy the script source in the SourceProvider, just reference the existing string
2599         https://bugs.webkit.org/show_bug.cgi?id=81466
2600
2601         Reviewed by Geoffrey Garen.
2602
2603         * parser/SourceCode.h: Remove the unused, and incorrect, function data().
2604         * parser/SourceProvider.h: Add OVERRIDE for clarity.
2605
2606 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2607
2608         Division optimizations fail to infer cases of truncated division and
2609         mishandle -2147483648/-1
2610         https://bugs.webkit.org/show_bug.cgi?id=81428
2611         <rdar://problem/11067382>
2612
2613         Reviewed by Oliver Hunt.
2614
2615         If you're a division over integers and you're only used as an integer, then you're
2616         an integer division and remainder checks become unnecessary. If you're dividing
2617         -2147483648 by -1, don't crash.
2618
2619         * assembler/MacroAssemblerX86Common.h:
2620         (MacroAssemblerX86Common):
2621         (JSC::MacroAssemblerX86Common::add32):
2622         * dfg/DFGSpeculativeJIT.cpp:
2623         (DFG):
2624         (JSC::DFG::SpeculativeJIT::compileIntegerArithDivForX86):
2625         * dfg/DFGSpeculativeJIT.h:
2626         (SpeculativeJIT):
2627         * dfg/DFGSpeculativeJIT32_64.cpp:
2628         (JSC::DFG::SpeculativeJIT::compile):
2629         * dfg/DFGSpeculativeJIT64.cpp:
2630         (JSC::DFG::SpeculativeJIT::compile):
2631         * llint/LowLevelInterpreter64.asm:
2632
2633 2012-03-19  Benjamin Poulain  <bpoulain@apple.com>
2634
2635         Simplify SmallStrings
2636         https://bugs.webkit.org/show_bug.cgi?id=81445
2637
2638         Reviewed by Gavin Barraclough.
2639
2640         SmallStrings had two methods that should not be public: count() and clear().
2641
2642         The method clear() is effectively replaced by finalizeSmallStrings(). The body
2643         of the method was moved to the constructor since the code is obvious.
2644
2645         The method count() is unused.
2646
2647         * runtime/SmallStrings.cpp:
2648         (JSC::SmallStrings::SmallStrings):
2649         * runtime/SmallStrings.h:
2650         (SmallStrings):
2651
2652 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2653
2654         DFG can no longer compile V8-v4/regexp in debug mode
2655         https://bugs.webkit.org/show_bug.cgi?id=81592
2656
2657         Reviewed by Gavin Barraclough.
2658
2659         * dfg/DFGSpeculativeJIT32_64.cpp:
2660         (JSC::DFG::SpeculativeJIT::compile):
2661         * dfg/DFGSpeculativeJIT64.cpp:
2662         (JSC::DFG::SpeculativeJIT::compile):
2663
2664 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2665
2666         Prediction propagation for UInt32ToNumber incorrectly assumes that outs outcome does not
2667         change throughout the fixpoint
2668         https://bugs.webkit.org/show_bug.cgi?id=81583
2669
2670         Reviewed by Michael Saboff.
2671
2672         * dfg/DFGPredictionPropagationPhase.cpp:
2673         (JSC::DFG::PredictionPropagationPhase::propagate):
2674
2675 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2676
2677         GC should not attempt to clear LLInt instruction inline caches for code blocks that are in
2678         the process of being generated
2679         https://bugs.webkit.org/show_bug.cgi?id=81565
2680
2681         Reviewed by Oliver Hunt.
2682
2683         * bytecode/CodeBlock.cpp:
2684         (JSC::CodeBlock::finalizeUnconditionally):
2685
2686 2012-03-19  Eric Seidel  <eric@webkit.org>
2687
2688         Fix WTF header include discipline in Chromium WebKit
2689         https://bugs.webkit.org/show_bug.cgi?id=81281
2690
2691         Reviewed by James Robinson.
2692
2693         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2694         * wtf/unicode/icu/CollatorICU.cpp:
2695
2696 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2697
2698         DFG NodeUse should be called Edge and NodeReferenceBlob should be called AdjacencyList
2699         https://bugs.webkit.org/show_bug.cgi?id=81556
2700
2701         Rubber stamped by Gavin Barraclough.
2702
2703         * GNUmakefile.list.am:
2704         * JavaScriptCore.xcodeproj/project.pbxproj:
2705         * dfg/DFGAbstractState.h:
2706         (JSC::DFG::AbstractState::forNode):
2707         * dfg/DFGAdjacencyList.h: Copied from Source/JavaScriptCore/dfg/DFGNodeReferenceBlob.h.
2708         (JSC::DFG::AdjacencyList::AdjacencyList):
2709         (JSC::DFG::AdjacencyList::child):
2710         (JSC::DFG::AdjacencyList::setChild):
2711         (JSC::DFG::AdjacencyList::child1):
2712         (JSC::DFG::AdjacencyList::child2):
2713         (JSC::DFG::AdjacencyList::child3):
2714         (JSC::DFG::AdjacencyList::setChild1):
2715         (JSC::DFG::AdjacencyList::setChild2):
2716         (JSC::DFG::AdjacencyList::setChild3):
2717         (JSC::DFG::AdjacencyList::child1Unchecked):
2718         (JSC::DFG::AdjacencyList::initialize):
2719         (AdjacencyList):
2720         * dfg/DFGByteCodeParser.cpp:
2721         (JSC::DFG::ByteCodeParser::addVarArgChild):
2722         (JSC::DFG::ByteCodeParser::processPhiStack):
2723         * dfg/DFGCSEPhase.cpp:
2724         (JSC::DFG::CSEPhase::canonicalize):
2725         (JSC::DFG::CSEPhase::performSubstitution):
2726         * dfg/DFGEdge.h: Copied from Source/JavaScriptCore/dfg/DFGNodeUse.h.
2727         (DFG):
2728         (JSC::DFG::Edge::Edge):
2729         (JSC::DFG::Edge::operator==):
2730         (JSC::DFG::Edge::operator!=):
2731         (Edge):
2732         (JSC::DFG::operator==):
2733         (JSC::DFG::operator!=):
2734         * dfg/DFGGraph.h:
2735         (JSC::DFG::Graph::operator[]):
2736         (JSC::DFG::Graph::at):
2737         (JSC::DFG::Graph::ref):
2738         (JSC::DFG::Graph::deref):
2739         (JSC::DFG::Graph::clearAndDerefChild1):
2740         (JSC::DFG::Graph::clearAndDerefChild2):
2741         (JSC::DFG::Graph::clearAndDerefChild3):
2742         (Graph):
2743         * dfg/DFGJITCompiler.h:
2744         (JSC::DFG::JITCompiler::getPrediction):
2745         * dfg/DFGNode.h:
2746         (JSC::DFG::Node::Node):
2747         (JSC::DFG::Node::child1):
2748         (JSC::DFG::Node::child1Unchecked):
2749         (JSC::DFG::Node::child2):
2750         (JSC::DFG::Node::child3):
2751         (Node):
2752         * dfg/DFGNodeFlags.cpp:
2753         (JSC::DFG::arithNodeFlagsAsString):
2754         * dfg/DFGNodeFlags.h:
2755         (DFG):
2756         (JSC::DFG::nodeUsedAsNumber):
2757         * dfg/DFGNodeReferenceBlob.h: Removed.
2758         * dfg/DFGNodeUse.h: Removed.
2759         * dfg/DFGPredictionPropagationPhase.cpp:
2760         (JSC::DFG::PredictionPropagationPhase::propagate):
2761         (JSC::DFG::PredictionPropagationPhase::mergeDefaultArithFlags):
2762         (JSC::DFG::PredictionPropagationPhase::vote):
2763         (JSC::DFG::PredictionPropagationPhase::fixupNode):
2764         * dfg/DFGScoreBoard.h:
2765         (JSC::DFG::ScoreBoard::use):
2766         * dfg/DFGSpeculativeJIT.cpp:
2767         (JSC::DFG::SpeculativeJIT::useChildren):
2768         (JSC::DFG::SpeculativeJIT::writeBarrier):
2769         (JSC::DFG::SpeculativeJIT::compilePutByValForByteArray):
2770         (JSC::DFG::SpeculativeJIT::compilePutByValForIntTypedArray):
2771         (JSC::DFG::SpeculativeJIT::compilePutByValForFloatTypedArray):
2772         (JSC::DFG::SpeculativeJIT::compileStrictEqForConstant):
2773         * dfg/DFGSpeculativeJIT.h:
2774         (JSC::DFG::SpeculativeJIT::at):
2775         (JSC::DFG::SpeculativeJIT::canReuse):
2776         (JSC::DFG::SpeculativeJIT::use):
2777         (SpeculativeJIT):
2778         (JSC::DFG::SpeculativeJIT::speculationCheck):
2779         (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
2780         (JSC::DFG::IntegerOperand::IntegerOperand):
2781         (JSC::DFG::DoubleOperand::DoubleOperand):
2782         (JSC::DFG::JSValueOperand::JSValueOperand):
2783         (JSC::DFG::StorageOperand::StorageOperand):
2784         (JSC::DFG::SpeculateIntegerOperand::SpeculateIntegerOperand):
2785         (JSC::DFG::SpeculateStrictInt32Operand::SpeculateStrictInt32Operand):
2786         (JSC::DFG::SpeculateDoubleOperand::SpeculateDoubleOperand):
2787         (JSC::DFG::SpeculateCellOperand::SpeculateCellOperand):
2788         (JSC::DFG::SpeculateBooleanOperand::SpeculateBooleanOperand):
2789         * dfg/DFGSpeculativeJIT32_64.cpp:
2790         (JSC::DFG::SpeculativeJIT::cachedPutById):
2791         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2792         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2793         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2794         (JSC::DFG::SpeculativeJIT::emitCall):
2795         (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
2796         (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
2797         * dfg/DFGSpeculativeJIT64.cpp:
2798         (JSC::DFG::SpeculativeJIT::cachedPutById):
2799         (JSC::DFG::SpeculativeJIT::nonSpeculativeNonPeepholeCompareNull):
2800         (JSC::DFG::SpeculativeJIT::nonSpeculativePeepholeBranchNull):
2801         (JSC::DFG::SpeculativeJIT::nonSpeculativeCompareNull):
2802         (JSC::DFG::SpeculativeJIT::emitCall):
2803         (JSC::DFG::SpeculativeJIT::compileObjectOrOtherLogicalNot):
2804         (JSC::DFG::SpeculativeJIT::emitObjectOrOtherBranch):
2805
2806 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2807
2808         Object.freeze broken on latest Nightly
2809         https://bugs.webkit.org/show_bug.cgi?id=80577
2810
2811         Reviewed by Oliver Hunt.
2812
2813         * runtime/Arguments.cpp:
2814         (JSC::Arguments::defineOwnProperty):
2815             - defineOwnProperty was checking for correct behaviour, provided that length/callee hadn't
2816             been overrridden. instead, just reify length/callee & rely on JSObject::defineOwnProperty.
2817         * runtime/JSFunction.cpp:
2818         (JSC::JSFunction::defineOwnProperty):
2819             - for arguments/caller/length properties, defineOwnProperty was incorrectly asserting that
2820             the object must be extensible; this is incorrect since these properties should already exist
2821             on the object. In addition, it was asserting that the arguments/caller values must match the
2822             corresponding magic data properties, but for strict mode function this is incorrect. Instead,
2823             just reify the arguments/caller accessor & defer to JSObject::defineOwnProperty.
2824
2825 2012-03-19  Filip Pizlo  <fpizlo@apple.com>
2826
2827         LLInt get_by_pname slow path incorrectly assumes that the operands are not constants
2828         https://bugs.webkit.org/show_bug.cgi?id=81559
2829
2830         Reviewed by Michael Saboff.
2831
2832         * llint/LLIntSlowPaths.cpp:
2833         (JSC::LLInt::LLINT_SLOW_PATH_DECL):
2834
2835 2012-03-19  Yong Li  <yoli@rim.com>
2836
2837         [BlackBerry] Implement OSAllocator::commit/decommit in the correct way
2838         https://bugs.webkit.org/show_bug.cgi?id=77013
2839
2840         We should use mmap(PROT_NONE, MAP_LAZY) instead of posix_madvise() to
2841         implement memory decommitting for QNX.
2842
2843         Reviewed by Rob Buis.
2844
2845         * wtf/OSAllocatorPosix.cpp:
2846         (WTF::OSAllocator::reserveUncommitted):
2847         (WTF::OSAllocator::commit):
2848         (WTF::OSAllocator::decommit):
2849
2850 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2851
2852         Unreviewed - revent a couple of files accidentally committed.
2853
2854         * runtime/Arguments.cpp:
2855         (JSC::Arguments::defineOwnProperty):
2856         * runtime/JSFunction.cpp:
2857         (JSC::JSFunction::defineOwnProperty):
2858
2859 2012-03-19  Jessie Berlin  <jberlin@apple.com>
2860
2861         Another Windows build fix after r111129.
2862
2863         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2864
2865 2012-03-19  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2866
2867         Cross-platform processor core counter: fix build on FreeBSD.
2868         https://bugs.webkit.org/show_bug.cgi?id=81482
2869
2870         Reviewed by Zoltan Herczeg.
2871
2872         The documentation of sysctl(3) shows that <sys/types.h> should be
2873         included before <sys/sysctl.h> (sys/types.h tends to be the first
2874         included header in general).
2875
2876         This should fix the build on FreeBSD and other systems where
2877         sysctl.h really depends on types defined in types.h.
2878
2879         * wtf/NumberOfCores.cpp:
2880
2881 2012-03-19  Jessie Berlin  <jberlin@apple.com>
2882
2883         Windows build fix after r111129.
2884
2885         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2886
2887 2012-03-19  Gavin Barraclough  <barraclough@apple.com>
2888
2889         JSCallbackFunction::toStringCallback/valueOfCallback do not handle 0 return value from convertToType
2890         https://bugs.webkit.org/show_bug.cgi?id=81468 <rdar://problem/11034745>
2891
2892         Reviewed by Oliver Hunt.
2893
2894         The API specifies that convertToType may opt not to handle a conversion:
2895             "@result The objects's converted value, or NULL if the object was not converted."
2896         In which case, it would propagate first up the JSClass hierarchy, calling its superclass's
2897         conversion functions, and failing that call the JSObject::defaultValue function.
2898
2899         Unfortunately this behaviour was removed in bug#69677/bug#69858, and instead we now rely on
2900         the toStringCallback/valueOfCallback function introduced in bug#69156. Even after a fix in
2901         bug#73368, these will return the result from the first convertToType they find, regardless
2902         of whether this result is null, and if no convertToType method is found in the api class
2903         hierarchy (possible if toStringCallback/valueOfCallback was accessed off the prototype
2904         chain), they will also return a null pointer. This is unsafe.
2905
2906         It would be easy to make the approach based around toStringCallback/valueOfCallback continue
2907         to walk the api class hierarchy, but making the fallback to defaultValue would be problematic
2908         (since defaultValue calls toStringCallback/valueOfCallback, this would infinitely recurse).
2909         Making the fallback work with toString/valueOf methods attached to api objects is probably
2910         not the right thing to do – instead, we should just implement the defaultValue trap for api
2911         objects.
2912
2913         In addition, this bug highlights that fact that JSCallbackFunction::call will allow a hard
2914         null to be returned from C to JavaScript - this is not okay. Handle with an exception.
2915
2916         * API/JSCallbackFunction.cpp:
2917         (JSC::JSCallbackFunction::call):
2918             - Should be null checking the return value.
2919         (JSC):
2920             - Remove toStringCallback/valueOfCallback.
2921         * API/JSCallbackFunction.h:
2922         (JSCallbackFunction):
2923             - Remove toStringCallback/valueOfCallback.
2924         * API/JSCallbackObject.h:
2925         (JSCallbackObject):
2926             - Add defaultValue mthods to JSCallbackObject.
2927         * API/JSCallbackObjectFunctions.h:
2928         (JSC::::defaultValue):
2929             - Add defaultValue mthods to JSCallbackObject.
2930         * API/JSClassRef.cpp:
2931         (OpaqueJSClass::prototype):
2932             - Remove toStringCallback/valueOfCallback.
2933         * API/tests/testapi.js:
2934             - Revert this test, now we no longer artificially introduce a toString method onto the api object.
2935
2936 2012-03-18  Raphael Kubo da Costa  <rakuco@FreeBSD.org>
2937
2938         [EFL] Include ICU_INCLUDE_DIRS when building.
2939         https://bugs.webkit.org/show_bug.cgi?id=81483
2940
2941         Reviewed by Daniel Bates.
2942
2943         So far, only the ICU libraries were being included when building
2944         JavaScriptCore, however the include path is also needed, otherwise the
2945         build will fail when ICU is installed into a non-standard location.
2946
2947         * PlatformEfl.cmake: Include ${ICU_INCLUDE_DIRS}.
2948
2949 2012-03-17  Gavin Barraclough  <barraclough@apple.com>
2950
2951         Strength reduction, RegExp.exec -> RegExp.test
2952         https://bugs.webkit.org/show_bug.cgi?id=81459
2953
2954         Reviewed by Sam Weinig.
2955
2956         RegExp.prototype.exec & RegExp.prototype.test can both be used to test a regular
2957         expression for a match against a string - however exec is more expensive, since
2958         it allocates a matches array object. In cases where the result is consumed in a
2959         boolean context the allocation of the matches array can be trivially elided.
2960
2961         For example:
2962             function f()
2963             {
2964                 for (i =0; i < 10000000; ++i)
2965                     if(!/a/.exec("a"))
2966                         err = true;
2967             }
2968
2969         This is a 2.5x speedup on this example microbenchmark loop.
2970
2971         In a more advanced form of this optimization, we may be able to avoid allocating
2972         the array where access to the array can be observed.
2973
2974         * create_hash_table:
2975         * dfg/DFGAbstractState.cpp:
2976         (JSC::DFG::AbstractState::execute):
2977         * dfg/DFGByteCodeParser.cpp:
2978         (JSC::DFG::ByteCodeParser::handleIntrinsic):
2979         * dfg/DFGNode.h:
2980         (JSC::DFG::Node::hasHeapPrediction):
2981         * dfg/DFGNodeType.h:
2982         (DFG):
2983         * dfg/DFGOperations.cpp:
2984         * dfg/DFGOperations.h:
2985         * dfg/DFGPredictionPropagationPhase.cpp:
2986         (JSC::DFG::PredictionPropagationPhase::propagate):
2987         * dfg/DFGSpeculativeJIT.cpp:
2988         (JSC::DFG::SpeculativeJIT::compileRegExpExec):
2989         (DFG):
2990         * dfg/DFGSpeculativeJIT.h:
2991         (JSC::DFG::SpeculativeJIT::callOperation):
2992         * dfg/DFGSpeculativeJIT32_64.cpp:
2993         (JSC::DFG::SpeculativeJIT::compile):
2994         * dfg/DFGSpeculativeJIT64.cpp:
2995         (JSC::DFG::SpeculativeJIT::compile):
2996         * jsc.cpp:
2997         (GlobalObject::addConstructableFunction):
2998         * runtime/Intrinsic.h:
2999         * runtime/JSFunction.cpp:
3000         (JSC::JSFunction::create):
3001         (JSC):
3002         * runtime/JSFunction.h:
3003         (JSFunction):
3004         * runtime/Lookup.cpp:
3005         (JSC::setUpStaticFunctionSlot):
3006         * runtime/RegExpObject.cpp:
3007         (JSC::RegExpObject::exec):
3008         (JSC::RegExpObject::match):
3009         * runtime/RegExpObject.h:
3010         (RegExpObject):
3011         * runtime/RegExpPrototype.cpp:
3012         (JSC::regExpProtoFuncTest):
3013         (JSC::regExpProtoFuncExec):
3014
3015 2012-03-16  Michael Saboff  <msaboff@apple.com>
3016
3017         Improve diagnostic benefit of JSGlobalData::m_isInitializingObject
3018         https://bugs.webkit.org/show_bug.cgi?id=81244
3019
3020         Rubber stamped by Filip Pizlo.
3021
3022         Changed type and name of JSGlobalData::m_isInitializingObject to
3023         ClassInfo* and m_initializingObjectClass.
3024         Changed JSGlobalData::setInitializingObject to
3025         JSGlobalData::setInitializingObjectClass.  This pointer can be used within 
3026         the debugger to determine what type of object is being initialized.
3027         
3028         * runtime/JSCell.h:
3029         (JSC::JSCell::finishCreation):
3030         (JSC::allocateCell):
3031         * runtime/JSGlobalData.cpp:
3032         (JSC::JSGlobalData::JSGlobalData):
3033         * runtime/JSGlobalData.h:
3034         (JSGlobalData):
3035         (JSC::JSGlobalData::isInitializingObject):
3036         (JSC::JSGlobalData::setInitializingObjectClass):
3037         * runtime/Structure.h:
3038         (JSC::JSCell::finishCreation):
3039
3040 2012-03-16  Mark Rowe  <mrowe@apple.com>
3041
3042         Build fix. Do not preserve owner and group information when installing the WTF headers.
3043
3044         * JavaScriptCore.xcodeproj/project.pbxproj:
3045
3046 2012-03-15  David Dorwin  <ddorwin@chromium.org>
3047
3048         Make the array pointer parameters in the Typed Array create() methods const.
3049         https://bugs.webkit.org/show_bug.cgi?id=81147
3050
3051         Reviewed by Kenneth Russell.
3052
3053         This allows const arrays to be passed to these methods.
3054         They use PassRefPtr<Subclass> create(), which already has a const parameter.
3055
3056         * wtf/Int16Array.h:
3057         (Int16Array):
3058         (WTF::Int16Array::create):
3059         * wtf/Int32Array.h:
3060         (Int32Array):
3061         (WTF::Int32Array::create):
3062         * wtf/Int8Array.h:
3063         (Int8Array):
3064         (WTF::Int8Array::create):
3065         * wtf/Uint16Array.h:
3066         (Uint16Array):
3067         (WTF::Uint16Array::create):
3068         * wtf/Uint32Array.h:
3069         (Uint32Array):
3070         (WTF::Uint32Array::create):
3071         * wtf/Uint8Array.h:
3072         (Uint8Array):
3073         (WTF::Uint8Array::create):
3074         * wtf/Uint8ClampedArray.h:
3075         (Uint8ClampedArray):
3076         (WTF::Uint8ClampedArray::create):
3077
3078 2012-03-15  Myles Maxfield  <mmaxfield@google.com>
3079
3080         CopiedSpace::tryAllocateOversize assumes system page size
3081         https://bugs.webkit.org/show_bug.cgi?id=80615
3082
3083         Reviewed by Geoffrey Garen.
3084
3085         * heap/CopiedSpace.cpp:
3086         (JSC::CopiedSpace::tryAllocateOversize):
3087         * heap/CopiedSpace.h:
3088         (CopiedSpace):
3089         * heap/CopiedSpaceInlineMethods.h:
3090         (JSC::CopiedSpace::oversizeBlockFor):
3091         * wtf/BumpPointerAllocator.h:
3092         (WTF::BumpPointerPool::create):
3093         * wtf/StdLibExtras.h:
3094         (WTF::roundUpToMultipleOf):
3095
3096 2012-03-15  Mark Hahnenberg  <mhahnenberg@apple.com>
3097
3098         Fixing Windows build breakage
3099
3100         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3101
3102 2012-03-15  Patrick Gansterer  <paroga@webkit.org>
3103
3104         [EFL] Make zlib a general build requirement
3105         https://bugs.webkit.org/show_bug.cgi?id=80153
3106
3107         Reviewed by Hajime Morita.
3108
3109         After r109538 WebSocket module needs zlib to support deflate-frame extension.
3110
3111         * wtf/Platform.h:
3112
3113 2012-03-15  Benjamin Poulain  <bpoulain@apple.com>
3114
3115         NumericStrings should be inlined
3116         https://bugs.webkit.org/show_bug.cgi?id=81183
3117
3118         Reviewed by Gavin Barraclough.
3119
3120         NumericStrings is not always inlined. When it is not, the class is not faster
3121         than using UString::number() directly.
3122
3123         * runtime/NumericStrings.h:
3124         (JSC::NumericStrings::add):
3125         (JSC::NumericStrings::lookupSmallString):
3126
3127 2012-03-15  Andras Becsi  <andras.becsi@nokia.com>
3128
3129         Fix ARM build after r110792.
3130
3131         Unreviewed build fix.
3132
3133         * jit/ExecutableAllocator.h:
3134         (JSC::ExecutableAllocator::cacheFlush):
3135         Remove superfluous curly brackets.
3136
3137 2012-03-15  Gavin Barraclough  <barraclough@apple.com>
3138
3139         ARMv7: prefer vmov(gpr,gpr->double) over vmov(gpr->single)
3140         https://bugs.webkit.org/show_bug.cgi?id=81256
3141
3142         Reviewed by Oliver Hunt.
3143
3144         This is a 0.5% sunspider progression.
3145
3146         * assembler/MacroAssemblerARMv7.h:
3147         (JSC::MacroAssemblerARMv7::convertInt32ToDouble):
3148             - switch which form of vmov we use.
3149
3150 2012-03-15  YoungTaeck Song  <youngtaeck.song@samsung.com>
3151
3152         [EFL] Add OwnPtr specialization for Ecore_Timer.
3153         https://bugs.webkit.org/show_bug.cgi?id=80119
3154
3155         Reviewed by Hajime Morita.
3156
3157         Add an overload for deleteOwnedPtr(Ecore_Timer*) on EFL port.
3158
3159         * wtf/OwnPtrCommon.h:
3160         (WTF):
3161         * wtf/efl/OwnPtrEfl.cpp:
3162         (WTF::deleteOwnedPtr):
3163         (WTF):
3164
3165 2012-03-15  Hojong Han  <hojong.han@samsung.com>
3166
3167         Linux has madvise enough to support OSAllocator::commit/decommit
3168         https://bugs.webkit.org/show_bug.cgi?id=80505
3169
3170         Reviewed by Geoffrey Garen.
3171
3172         * wtf/OSAllocatorPosix.cpp:
3173         (WTF::OSAllocator::reserveUncommitted):
3174         (WTF::OSAllocator::commit):
3175         (WTF::OSAllocator::decommit):
3176
3177 2012-03-15  Steve Falkenburg  <sfalken@apple.com>
3178
3179         Windows build fix.
3180
3181         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGO.vsprops:
3182         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreReleasePGOOptimize.vsprops:
3183         * JavaScriptCore.vcproj/WTF/copy-files.cmd:
3184         * JavaScriptCore.vcproj/jsc/jscReleasePGO.vsprops:
3185
3186 2012-03-15  Steve Falkenburg  <sfalken@apple.com>
3187
3188         Windows build fix.
3189
3190         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj:
3191
3192 2012-03-15  Kevin Ollivier  <kevino@theolliviers.com>
3193
3194         Move wx port to using export macros
3195         https://bugs.webkit.org/show_bug.cgi?id=77279
3196
3197         Reviewed by Hajime Morita.
3198
3199         * wscript:
3200         * wtf/Platform.h:
3201
3202 2012-03-14  Benjamin Poulain  <bpoulain@apple.com>
3203
3204         Avoid StringImpl::getData16SlowCase() when sorting array
3205         https://bugs.webkit.org/show_bug.cgi?id=81070
3206
3207         Reviewed by Geoffrey Garen.
3208
3209         The function codePointCompare() is used intensively when sorting strings.
3210         This patch improves its performance by:
3211         -Avoiding character conversion.
3212         -Inlining the function.
3213
3214         This makes Peacekeeper's arrayCombined test 30% faster.
3215
3216         * wtf/text/StringImpl.cpp:
3217         * wtf/text/StringImpl.h:
3218         (WTF):
3219         (WTF::codePointCompare):
3220         (WTF::codePointCompare8):
3221         (WTF::codePointCompare16):
3222         (WTF::codePointCompare8To16):
3223
3224 2012-03-14  Hojong Han  <hojong.han@samsung.com>
3225
3226         Fix memory allocation failed by fastmalloc
3227         https://bugs.webkit.org/show_bug.cgi?id=79614
3228
3229         Reviewed by Geoffrey Garen.
3230
3231         Memory allocation failed even if the heap grows successfully.
3232         It is wrong to get the span only from the large list after the heap grows,
3233         because new span could be added in the normal list.
3234
3235         * wtf/FastMalloc.cpp:
3236         (WTF::TCMalloc_PageHeap::New):
3237
3238 2012-03-14  Hojong Han  <hojong.han@samsung.com>
3239
3240         Run cacheFlush page by page to assure of flushing all the requested ranges
3241         https://bugs.webkit.org/show_bug.cgi?id=77712
3242
3243         Reviewed by Geoffrey Garen.
3244
3245         Current MetaAllocator concept, always coalesces adjacent free spaces,
3246         doesn't meet memory management of Linux kernel.
3247         In a certain case Linux kernel doesn't regard contiguous virtual memory areas as one but two.
3248         Therefore cacheFlush page by page guarantees a flush-requested range.
3249
3250         * jit/ExecutableAllocator.h:
3251         (JSC::ExecutableAllocator::cacheFlush):
3252
3253 2012-03-14  Oliver Hunt  <oliver@apple.com>
3254
3255         Make ARMv7 work again
3256         https://bugs.webkit.org/show_bug.cgi?id=81157
3257
3258         Reviewed by Geoffrey Garen.
3259
3260         We were trying to use the ARMv7 dataRegister as a scratch register in a scenario
3261         where we the ARMv7MacroAssembler would also try to use dataRegister for its own
3262         nefarious purposes.
3263
3264         * assembler/MacroAssembler.h:
3265         (JSC::MacroAssembler::store32):
3266         * assembler/MacroAssemblerARMv7.h:
3267         (MacroAssemblerARMv7):
3268
3269 2012-03-14  Mark Hahnenberg  <mhahnenberg@apple.com>
3270
3271         Heap::destroy leaks CopiedSpace
3272         https://bugs.webkit.org/show_bug.cgi?id=81055
3273
3274         Reviewed by Geoffrey Garen.
3275
3276         Added a destroy() function to CopiedSpace that moves all normal size 
3277         CopiedBlocks from the CopiedSpace to the Heap's list of free blocks 
3278         as well as deallocates all of the oversize blocks in the CopiedSpace. 
3279         This function is now called in Heap::destroy().
3280
3281         * heap/CopiedSpace.cpp:
3282         (JSC::CopiedSpace::destroy):
3283         (JSC):
3284         * heap/CopiedSpace.h:
3285         (CopiedSpace):
3286         * heap/Heap.cpp:
3287         (JSC::Heap::destroy):
3288
3289 2012-03-14  Andrew Lo  <anlo@rim.com>
3290
3291         [BlackBerry] Implement REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR using AnimationFrameRateController
3292         https://bugs.webkit.org/show_bug.cgi?id=81000
3293
3294         Enable WTF_USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR for BlackBerry.
3295
3296         Reviewed by Antonio Gomes.
3297
3298         * wtf/Platform.h:
3299
3300 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3301
3302         ValueToInt32 speculation will cause OSR exits even when it does not have to
3303         https://bugs.webkit.org/show_bug.cgi?id=81068
3304         <rdar://problem/11043926>
3305
3306         Reviewed by Anders Carlsson.
3307         
3308         Two related changes:
3309         1) ValueToInt32 will now always just defer to the non-speculative path, instead
3310            of exiting, if it doesn't know what speculations to perform.
3311         2) ValueToInt32 will speculate boolean if it sees this to be profitable.
3312
3313         * dfg/DFGAbstractState.cpp:
3314         (JSC::DFG::AbstractState::execute):
3315         * dfg/DFGNode.h:
3316         (JSC::DFG::Node::shouldSpeculateBoolean):
3317         (Node):
3318         * dfg/DFGSpeculativeJIT.cpp:
3319         (JSC::DFG::SpeculativeJIT::compileValueToInt32):
3320
3321 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3322
3323         More Windows build fixing
3324
3325         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3326
3327 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3328
3329         Windows build fix
3330
3331         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3332
3333 2012-03-13  Mark Hahnenberg  <mhahnenberg@apple.com>
3334
3335         Type conversion of exponential part failed
3336         https://bugs.webkit.org/show_bug.cgi?id=80673
3337
3338         Reviewed by Geoffrey Garen.
3339
3340         * parser/Lexer.cpp:
3341         (JSC::::lex):
3342         * runtime/JSGlobalObjectFunctions.cpp:
3343         (JSC::parseInt):
3344         (JSC):
3345         (JSC::jsStrDecimalLiteral): Added another template argument that exposes whether or not
3346         we accept trailing junk to clients of jsStrDecimalLiteral. Also added additional template 
3347         parameter for strtod to allow trailing spaces.
3348         (JSC::toDouble):
3349         (JSC::parseFloat): Accept trailing junk, as per the ECMA 262 spec (15.1.2.3).
3350         * runtime/LiteralParser.cpp:
3351         (JSC::::Lexer::lexNumber):
3352         * tests/mozilla/expected.html: Update the expected page for run-javascriptcore-tests so that 
3353         we will run ecma/TypeConversion/9.3.1-3.js as a regression test now.
3354         * wtf/dtoa.cpp:
3355         (WTF):
3356         (WTF::strtod): We also needed to sometimes accept trailing spaces to pass a few other tests that were 
3357         broken by changing the default allowance of trailing junk in jsStrDecimalLiteral.
3358         * wtf/dtoa.h:
3359         * wtf/dtoa/double-conversion.cc: When the AdvanceToNonspace function was lifted out of the 
3360         Chromium codebase, the person porting it only thought to check for spaces when skipping whitespace.
3361         A few of our JSC tests check for other types of trailing whitespace, so I've added checks for those 
3362         here to cover those cases (horizontal tab, vertical tab, carriage return, form feed, and line feed).
3363         * wtf/text/WTFString.cpp:
3364         (WTF::toDoubleType): Disallow trailing spaces, as this breaks form input verification stuff.
3365
3366 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3367
3368         Unreviewed, build fix since is_pod<> includes some header that I didn't know about.
3369         Removing the assert for now.
3370
3371         * dfg/DFGOperations.h:
3372         * llint/LLIntSlowPaths.h:
3373
3374 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3375
3376         Functions with C linkage should return POD types
3377         https://bugs.webkit.org/show_bug.cgi?id=81061
3378
3379         Reviewed by Mark Rowe.
3380
3381         * dfg/DFGOperations.h:
3382         * llint/LLIntSlowPaths.h:
3383         (LLInt):
3384         (SlowPathReturnType):
3385         (JSC::LLInt::encodeResult):
3386
3387 2012-03-13  Filip Pizlo  <fpizlo@apple.com>
3388
3389         Loads from UInt32Arrays should not result in a double up-convert if it isn't necessary
3390         https://bugs.webkit.org/show_bug.cgi?id=80979
3391         <rdar://problem/11036848>
3392
3393         Reviewed by Oliver Hunt.
3394         
3395         Also improved DFG IR dumping to include type information in a somewhat more
3396         intuitive way.
3397
3398         * bytecode/PredictedType.cpp:
3399         (JSC::predictionToAbbreviatedString):
3400         (JSC):
3401         * bytecode/PredictedType.h:
3402         (JSC):
3403         * dfg/DFGAbstractState.cpp:
3404         (JSC::DFG::AbstractState::execute):
3405         * dfg/DFGGraph.cpp:
3406         (JSC::DFG::Graph::dump):
3407         * dfg/DFGPredictionPropagationPhase.cpp:
3408         (JSC::DFG::PredictionPropagationPhase::propagate):
3409         * dfg/DFGSpeculativeJIT.cpp:
3410         (JSC::DFG::SpeculativeJIT::compileUInt32ToNumber):
3411         (JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
3412         * dfg/DFGSpeculativeJIT.h:
3413         (JSC::DFG::SpeculativeJIT::forwardSpeculationCheck):
3414
3415 2012-03-13  George Staikos  <staikos@webkit.org>
3416
3417         The callback is only used if SA_RESTART is defined.  Compile it out
3418         otherwise to avoid a warning.
3419         https://bugs.webkit.org/show_bug.cgi?id=80926
3420
3421         Reviewed by Alexey Proskuryakov.
3422
3423         * heap/MachineStackMarker.cpp:
3424         (JSC):
3425
3426 2012-03-13  Hojong Han  <hojong.han@samsung.com>
3427
3428         Dump the generated code for ARM_TRADITIONAL
3429         https://bugs.webkit.org/show_bug.cgi?id=80975
3430
3431         Reviewed by Gavin Barraclough.
3432
3433         * assembler/LinkBuffer.h:
3434         (JSC::LinkBuffer::dumpCode):
3435
3436 2012-03-13  Adam Barth  <abarth@webkit.org> && Benjamin Poulain  <bpoulain@apple.com>
3437
3438         Always enable ENABLE(CLIENT_BASED_GEOLOCATION)
3439         https://bugs.webkit.org/show_bug.cgi?id=78853
3440
3441         Reviewed by Adam Barth.
3442
3443         * Configurations/FeatureDefines.xcconfig:
3444         * wtf/Platform.h:
3445
3446 2012-03-13  Kwonjin Jeong  <gram@company100.net>