4dab38f7603ba282e953c22e4de1a0cc57e00900
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2011-04-29  Gavin Barraclough  <barraclough@apple.com>
2
3         Reviewed by Oliver Hunt & Geoff Garen.
4
5         https://bugs.webkit.org/show_bug.cgi?id=59221
6         [RegexFuzz] Regression blocking testing
7
8         Okay, so the bug here is that when, in the case of a TypeParentheticalAssertion
9         node, emitDisjunction recursively calls to itself to emit the nested disjunction
10         the value of parenthesesInputCountAlreadyChecked is bogus (doesn't take into
11         account the uncheck that has just taken place).
12
13         Also, the special handling given to countToCheck in the case of parenthetical
14         assertions is nonsense, delete it, along with the isParentheticalAssertion argument.
15
16         * yarr/YarrInterpreter.cpp:
17         (JSC::Yarr::ByteCompiler::emitDisjunction):
18
19 2011-04-29  Csaba Osztrogonác  <ossy@webkit.org>
20
21         Reviewed by Adam Barth.
22
23         Enable strict OwnPtr for Qt
24         https://bugs.webkit.org/show_bug.cgi?id=59667
25
26         * wtf/OwnPtr.h:
27
28 2011-04-29  Dean Jackson  <dino@apple.com>
29
30         Reviewed by Simon Fraser.
31
32         Add ENABLE macro for WebKitAnimation
33         https://bugs.webkit.org/show_bug.cgi?id=59729
34
35         Add new feature to toggle WebKit Animation API.
36
37         * Configurations/FeatureDefines.xcconfig:
38
39 2011-04-28  Sam Weinig  <sam@webkit.org>
40
41         Reviewed by Mark Rowe.
42
43         Install testapi.js along side testapi
44         https://bugs.webkit.org/show_bug.cgi?id=59773
45
46         * JavaScriptCore.xcodeproj/project.pbxproj:
47         Add new build phase to copy testapi.js to install path of testapi
48         on install.
49
50 2011-04-28  David Levin  <levin@chromium.org>
51
52         Reviewed by Adam Barth.
53
54         Remove IMAGE_RESIZER related code.
55         https://bugs.webkit.org/show_bug.cgi?id=59735
56
57         * Configurations/FeatureDefines.xcconfig:
58
59 2011-04-28  Gavin Barraclough  <barraclough@apple.com>
60
61         Reviewed by Oliver Hunt.
62
63         https://bugs.webkit.org/show_bug.cgi?id=59763
64         DFG JIT - Unify FPRReg & FPRegisterID
65
66         (Following on from GPRReg/RegisterID unification).
67
68         * dfg/DFGFPRInfo.h:
69         (JSC::DFG::FPRInfo::toRegister):
70         (JSC::DFG::FPRInfo::debugName):
71         * dfg/DFGGPRInfo.h:
72         * dfg/DFGJITCodeGenerator.cpp:
73         (JSC::DFG::JITCodeGenerator::fillDouble):
74         (JSC::DFG::JITCodeGenerator::checkConsistency):
75         * dfg/DFGJITCodeGenerator.h:
76         (JSC::DFG::JITCodeGenerator::boxDouble):
77         (JSC::DFG::JITCodeGenerator::unboxDouble):
78         (JSC::DFG::JITCodeGenerator::flushRegisters):
79         (JSC::DFG::JITCodeGenerator::isFlushed):
80         (JSC::DFG::JITCodeGenerator::setupTwoStubArgs):
81         (JSC::DFG::JITCodeGenerator::setupStubArguments):
82         (JSC::DFG::JITCodeGenerator::callOperation):
83         (JSC::DFG::GPRResult::lockedResult):
84         (JSC::DFG::FPRResult::lockedResult):
85         * dfg/DFGJITCompiler.cpp:
86         (JSC::DFG::JITCompiler::fillNumericToDouble):
87         (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
88         (JSC::DFG::JITCompiler::compileFunction):
89         * dfg/DFGJITCompiler.h:
90         * dfg/DFGNode.h:
91         * dfg/DFGNonSpeculativeJIT.cpp:
92         (JSC::DFG::EntryLocation::EntryLocation):
93         (JSC::DFG::NonSpeculativeJIT::valueToNumber):
94         (JSC::DFG::NonSpeculativeJIT::valueToInt32):
95         (JSC::DFG::NonSpeculativeJIT::numberToInt32):
96         (JSC::DFG::NonSpeculativeJIT::compile):
97         * dfg/DFGNonSpeculativeJIT.h:
98         (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters):
99         (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters):
100         * dfg/DFGRegisterBank.h:
101         (JSC::DFG::RegisterBank::iterator::regID):
102         (JSC::DFG::RegisterBank::iterator::debugName):
103         * dfg/DFGSpeculativeJIT.cpp:
104         (JSC::DFG::SpeculationCheck::SpeculationCheck):
105         (JSC::DFG::SpeculativeJIT::compile):
106         * dfg/DFGSpeculativeJIT.h:
107
108 2011-04-28  David Kilzer  <ddkilzer@apple.com>
109
110         Revert "<http://webkit.org/b/59705> WTF::postTimer() leaks a CFRunLoopTimerRef every time it's called"
111
112         This reverts commit r85195.  It was crashing DumpRenderTree on Lion.
113
114         * wtf/mac/MainThreadMac.mm:
115         (WTF::postTimer):
116
117 2011-04-28  Adam Barth  <abarth@webkit.org>
118
119         Reviewed by Eric Seidel.
120
121         Remove WML
122         https://bugs.webkit.org/show_bug.cgi?id=59678
123
124         Remove the WML configuration option from the Mac build system.
125
126         * Configurations/FeatureDefines.xcconfig:
127
128 2011-04-28  Sheriff Bot  <webkit.review.bot@gmail.com>
129
130         Unreviewed, rolling out r85233 and r85235.
131         http://trac.webkit.org/changeset/85233
132         http://trac.webkit.org/changeset/85235
133         https://bugs.webkit.org/show_bug.cgi?id=59754
134
135         Causes issues with jsc. (Requested by dave_levin on #webkit).
136
137         * GNUmakefile.list.am:
138         * JavaScriptCore.gypi:
139         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
140         * JavaScriptCore.xcodeproj/project.pbxproj:
141         * jit/ExecutableAllocator.h:
142         (JSC::ExecutablePool::ExecutablePool):
143         * parser/SourceProvider.h:
144         (JSC::SourceProvider::SourceProvider):
145         * runtime/RegExp.cpp:
146         (JSC::RegExp::RegExp):
147         * wtf/CMakeLists.txt:
148         * wtf/RefCounted.h:
149         (WTF::RefCountedBase::ref):
150         (WTF::RefCountedBase::hasOneRef):
151         (WTF::RefCountedBase::refCount):
152         (WTF::RefCountedBase::derefBase):
153         * wtf/SizeLimits.cpp:
154         * wtf/ThreadRestrictionVerifier.h: Removed.
155         * wtf/text/CString.h:
156         (WTF::CStringBuffer::CStringBuffer):
157
158 2011-04-28  Gavin Barraclough  <barraclough@apple.com>
159
160         Reviewed by Oliver Hunt.
161
162         Bug 59740 - DFG JIT - Unify GPRReg & RegisterID
163
164         Currently we use a mix of enum values throughout the DFG JIT to  represent
165         gpr registers - the RegisterID provided by the MacroAssembler, and the
166         GPRReg enum giving the sequential register set over which the RegisterBank
167         allocates. Unify the two.
168
169         Patch to unify FPRReg in a similar fashion will follow.
170
171         * JavaScriptCore.xcodeproj/project.pbxproj:
172         * dfg/DFGFPRInfo.h: Added.
173         (JSC::DFG::next):
174         (JSC::DFG::FPRBankInfo::toRegister):
175         (JSC::DFG::FPRBankInfo::toIndex):
176         * dfg/DFGGPRInfo.h: Added.
177         (JSC::DFG::GPRInfo::toRegister):
178         (JSC::DFG::GPRInfo::toIndex):
179         (JSC::DFG::GPRInfo::debugName):
180         * dfg/DFGJITCodeGenerator.cpp:
181         (JSC::DFG::JITCodeGenerator::fillInteger):
182         (JSC::DFG::JITCodeGenerator::fillDouble):
183         (JSC::DFG::JITCodeGenerator::fillJSValue):
184         (JSC::DFG::JITCodeGenerator::dump):
185         (JSC::DFG::JITCodeGenerator::checkConsistency):
186         (JSC::DFG::GPRTemporary::GPRTemporary):
187         (JSC::DFG::FPRTemporary::FPRTemporary):
188         * dfg/DFGJITCodeGenerator.h:
189         (JSC::DFG::JITCodeGenerator::boxDouble):
190         (JSC::DFG::JITCodeGenerator::unboxDouble):
191         (JSC::DFG::JITCodeGenerator::spill):
192         (JSC::DFG::JITCodeGenerator::flushRegisters):
193         (JSC::DFG::JITCodeGenerator::isFlushed):
194         (JSC::DFG::JITCodeGenerator::bitOp):
195         (JSC::DFG::JITCodeGenerator::shiftOp):
196         (JSC::DFG::JITCodeGenerator::setupTwoStubArgs):
197         (JSC::DFG::JITCodeGenerator::setupStubArguments):
198         (JSC::DFG::JITCodeGenerator::callOperation):
199         (JSC::DFG::IntegerOperand::gpr):
200         (JSC::DFG::DoubleOperand::gpr):
201         (JSC::DFG::GPRTemporary::gpr):
202         (JSC::DFG::FPRTemporary::gpr):
203         (JSC::DFG::GPRResult::lockedResult):
204         * dfg/DFGJITCompiler.cpp:
205         (JSC::DFG::JITCompiler::fillNumericToDouble):
206         (JSC::DFG::JITCompiler::fillInt32ToInteger):
207         (JSC::DFG::JITCompiler::fillToJS):
208         (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
209         (JSC::DFG::JITCompiler::compileFunction):
210         (JSC::DFG::JITCompiler::jitAssertIsInt32):
211         (JSC::DFG::JITCompiler::jitAssertIsJSInt32):
212         (JSC::DFG::JITCompiler::jitAssertIsJSNumber):
213         (JSC::DFG::JITCompiler::jitAssertIsJSDouble):
214         * dfg/DFGJITCompiler.h:
215         (JSC::DFG::JITCompiler::preserveReturnAddressAfterCall):
216         (JSC::DFG::JITCompiler::restoreReturnAddressBeforeReturn):
217         (JSC::DFG::JITCompiler::emitGetFromCallFrameHeaderPtr):
218         (JSC::DFG::JITCompiler::emitPutToCallFrameHeader):
219         (JSC::DFG::JITCompiler::emitPutImmediateToCallFrameHeader):
220         (JSC::DFG::JITCompiler::addressForGlobalVar):
221         (JSC::DFG::JITCompiler::addressFor):
222         (JSC::DFG::JITCompiler::tagFor):
223         (JSC::DFG::JITCompiler::payloadFor):
224         * dfg/DFGNonSpeculativeJIT.cpp:
225         (JSC::DFG::EntryLocation::EntryLocation):
226         (JSC::DFG::NonSpeculativeJIT::valueToNumber):
227         (JSC::DFG::NonSpeculativeJIT::valueToInt32):
228         (JSC::DFG::NonSpeculativeJIT::numberToInt32):
229         (JSC::DFG::NonSpeculativeJIT::compile):
230         * dfg/DFGNonSpeculativeJIT.h:
231         (JSC::DFG::NonSpeculativeJIT::silentSpillGPR):
232         (JSC::DFG::NonSpeculativeJIT::silentSpillFPR):
233         (JSC::DFG::NonSpeculativeJIT::silentFillGPR):
234         (JSC::DFG::NonSpeculativeJIT::silentFillFPR):
235         (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters):
236         (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters):
237         * dfg/DFGRegisterBank.h:
238         (JSC::DFG::RegisterBank::allocate):
239         (JSC::DFG::RegisterBank::retain):
240         (JSC::DFG::RegisterBank::release):
241         (JSC::DFG::RegisterBank::lock):
242         (JSC::DFG::RegisterBank::unlock):
243         (JSC::DFG::RegisterBank::isLocked):
244         (JSC::DFG::RegisterBank::name):
245         (JSC::DFG::RegisterBank::iterator::name):
246         (JSC::DFG::RegisterBank::iterator::isLocked):
247         (JSC::DFG::RegisterBank::iterator::release):
248         (JSC::DFG::RegisterBank::iterator::gpr):
249         (JSC::DFG::RegisterBank::iterator::debugName):
250         (JSC::DFG::RegisterBank::iterator::operator++):
251         (JSC::DFG::RegisterBank::iterator::operator!=):
252         (JSC::DFG::RegisterBank::iterator::index):
253         (JSC::DFG::RegisterBank::iterator::iterator):
254         (JSC::DFG::RegisterBank::begin):
255         (JSC::DFG::RegisterBank::end):
256         (JSC::DFG::RegisterBank::isLockedAtIndex):
257         (JSC::DFG::RegisterBank::nameAtIndex):
258         (JSC::DFG::RegisterBank::releaseAtIndex):
259         (JSC::DFG::RegisterBank::allocateInternal):
260         (JSC::DFG::RegisterBank::MapEntry::MapEntry):
261         * dfg/DFGScoreBoard.h:
262         (JSC::DFG::ScoreBoard::~ScoreBoard):
263         * dfg/DFGSpeculativeJIT.cpp:
264         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
265         (JSC::DFG::SpeculationCheck::SpeculationCheck):
266         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
267         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
268         (JSC::DFG::SpeculativeJIT::compile):
269         (JSC::DFG::SpeculativeJIT::checkArgumentTypes):
270         (JSC::DFG::SpeculativeJIT::initializeVariableTypes):
271         * dfg/DFGSpeculativeJIT.h:
272         (JSC::DFG::SpeculateIntegerOperand::gpr):
273
274 2011-04-28  Oliver Hunt  <oliver@apple.com>
275
276         Reviewed by Gavin Barraclough.
277
278         Remove evil addressOfStructure() function
279         https://bugs.webkit.org/show_bug.cgi?id=59739
280
281         Remove the addressOfStructure function from JSCell, and update
282         callsites to use the same logic as testPrototype()
283
284         * jit/JITPropertyAccess.cpp:
285         (JSC::JIT::privateCompileGetByIdProto):
286         (JSC::JIT::privateCompileGetByIdProtoList):
287         * jit/JITPropertyAccess32_64.cpp:
288         (JSC::JIT::privateCompileGetByIdProto):
289         (JSC::JIT::privateCompileGetByIdProtoList):
290         * runtime/JSCell.h:
291
292 2011-04-28  Oliver Hunt  <oliver@apple.com>
293
294         Reviewed by Gavin Barraclough.
295
296         Clean up testPrototype()
297         https://bugs.webkit.org/show_bug.cgi?id=59734
298
299         Remove direct pointer to the inside of a GC object and just do
300         the indirect load manually.  Doesn't effect sunspider but does
301         clean up the code quite a bit, and simplifies the handling of
302         GC values.
303
304         * jit/JITPropertyAccess.cpp:
305         (JSC::JIT::testPrototype):
306
307 2011-04-28  David Levin  <levin@chromium.org>
308
309         Build fix.
310
311         * wtf/RefCounted.h: Fix inverted ifdef.
312
313 2011-04-07  David Levin  <levin@chromium.org>
314
315         Reviewed by Darin Adler.
316
317         Add asserts to RefCounted to make sure ref/deref happens on the right thread.
318         https://bugs.webkit.org/show_bug.cgi?id=31639
319
320         * GNUmakefile.list.am: Added new files to the build.
321         * JavaScriptCore.gypi: Ditto.
322         * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto.
323         * JavaScriptCore.xcodeproj/project.pbxproj: Ditto.
324         * jit/ExecutableAllocator.h:
325         (JSC::ExecutablePool::ExecutablePool): Turned off checks for this
326         due to not being able to figure out what was guarding it (bug 58091).
327         * parser/SourceProvider.h:
328         (JSC::SourceProvider::SourceProvider): Ditto.
329         * runtime/RegExp.cpp:
330         (JSC::RegExp::RegExp): Ditto.
331         * wtf/CMakeLists.txt: Added new files to the build.
332         * wtf/ThreadRestrictionVerifier.h: Added.
333         Everything is done in the header to avoid the issue with exports
334         that are only useful in debug but still needing to export them.
335         * wtf/RefCounted.h:
336         (WTF::RefCountedBase::ref): Added checks using the non thread safe verifier.
337         and filed bug 58171 about making it stricter.
338         (WTF::RefCountedBase::hasOneRef): Ditto.
339         (WTF::RefCountedBase::refCount): Ditto.
340         (WTF::RefCountedBase::setMutexForVerifier): Expose a way to change the checks to be based
341         on a mutex. This is in the header to avoid adding more exports from JavaScriptCore.
342         (WTF::RefCountedBase::deprecatedTurnOffVerifier): Temporary way to turn off verification.
343         Filed bug 58174 to remove this method.
344         (WTF::RefCountedBase::derefBase):
345         * wtf/SizeLimits.cpp: Adjusted the debug size check for RefCounted.
346         * wtf/text/CString.h:
347         (WTF::CStringBuffer::CStringBuffer): Turned off checks for this while a fix is being
348         done in Chromium's test_shell (bug 58093).
349
350 2011-04-28  Xan Lopez  <xlopez@igalia.com>
351
352         Unreviewed attempt to fix the build.
353
354         * GNUmakefile.am: add -lpthread.
355
356 2011-04-28  Oliver Hunt  <oliver@apple.com>
357
358         Reviewed by Gavin Barraclough.
359
360         Only need a single implementation of testPrototype
361         https://bugs.webkit.org/show_bug.cgi?id=59724
362
363         Remove excess copy of identical testPrototype() code
364
365         * jit/JITPropertyAccess.cpp:
366         (JSC::JIT::testPrototype):
367         * jit/JITPropertyAccess32_64.cpp:
368
369 2011-04-28  Xan Lopez  <xlopez@igalia.com>
370
371         Reviewed by Martin Robinson.
372
373         [Gtk] Split JSC and WebCore builds
374         https://bugs.webkit.org/show_bug.cgi?id=19428
375
376         Build JavaScriptCore as a libtool shared library instead of a
377         private convenience library.
378
379         * GNUmakefile.am: define new jsc library and adapt to new name for
380         javascriptcore target.
381         * GNUmakefile.list.am: ditto.
382
383 2011-04-28  David Kilzer  <ddkilzer@apple.com>
384
385         <http://webkit.org/b/59705> WTF::postTimer() leaks a CFRunLoopTimerRef every time it's called
386
387         Reviewed by Simon Fraser.
388
389         * wtf/mac/MainThreadMac.mm:
390         (WTF::postTimer): Use RetainPtr to plug the leak.
391
392 2011-04-27  Sam Weinig  <sam@webkit.org>
393
394         Reviewed by David Kilzer.
395
396         Add way to install testapi in production builds
397         https://bugs.webkit.org/show_bug.cgi?id=59674
398
399         * Configurations/TestAPI.xcconfig: Copied from Configurations/JavaScriptCore.xcconfig.
400         Add configuration file for TestAPI. In addition to name, we now specify an install path
401         and allow SKIP_INSTALL to be overridden by setting FORCE_TOOL_INSTALL.
402
403         * JavaScriptCore.xcodeproj/project.pbxproj:
404         Remove in-project build settings and add missing configuration files. Added missing CompilerVersion.xcconfig
405         file.
406
407 2011-04-27  Adam Barth  <abarth@webkit.org>
408
409         Reviewed by David Levin.
410
411         Enable strict OwnPtrs for Chromium
412         https://bugs.webkit.org/show_bug.cgi?id=59666
413
414         * wtf/OwnPtr.h:
415
416 2011-04-27  Oliver Hunt  <oliver@apple.com>
417
418         Reviewed by Geoffrey Garen.
419
420         Add ability to remove keys from weakmap API
421         https://bugs.webkit.org/show_bug.cgi?id=59645
422
423         Add JSWeakObjectMapRemove API
424
425         * API/JSWeakObjectMapRefPrivate.cpp:
426         * API/JSWeakObjectMapRefPrivate.h:
427         * JavaScriptCore.exp:
428
429 2011-04-27  Adam Barth  <abarth@webkit.org>
430
431         Reviewed by David Levin.
432
433         Enable strict mode for OwnPtr
434         https://bugs.webkit.org/show_bug.cgi?id=59428
435
436         This patch enables strict mode for OwnPtr on PLATFORM(MAC) only.
437
438         * wtf/OwnPtr.h:
439
440 2011-04-27  Steve Block  <steveblock@google.com>
441
442         Reviewed by David Levin.
443
444         Remove Android build system
445         https://bugs.webkit.org/show_bug.cgi?id=48111
446
447         This is to avoid the maintenance burden until the Android port is
448         fully upstreamed.
449
450         * Android.mk: Removed.
451         * Android.v8.wtf.mk: Removed.
452
453 2011-04-27  Mark Rowe  <mrowe@apple.com>
454
455         Fix 32-bit build after r85036.
456
457         * wtf/Platform.h: USE(PLUGIN_HOST_PROCESS) is only true for 64-bit.
458
459 2011-04-27  Csaba Osztrogonác  <ossy@webkit.org>
460
461         Unreviewed buildfix after r85036.
462
463         Readd non-dead code.
464
465         * wtf/OSAllocatorPosix.cpp:
466         (WTF::OSAllocator::reserveAndCommit):
467
468 2011-04-27  Adam Barth  <abarth@webkit.org>
469
470         Reviewed by Kenneth Russell.
471
472         OwnPtr assignment operator should be private
473         https://bugs.webkit.org/show_bug.cgi?id=59487
474
475         Unfortunately we can't remove the copy constructor because of some
476         detail about gcc.  (The issue is documented in a comment already.)
477
478         * wtf/OwnPtr.h:
479
480 2011-04-26  Sheriff Bot  <webkit.review.bot@gmail.com>
481
482         Unreviewed, rolling out r84977.
483         http://trac.webkit.org/changeset/84977
484         https://bugs.webkit.org/show_bug.cgi?id=59568
485
486         caused crashes on the SL WK2 bots (Requested by jessieberlin
487         on #webkit).
488
489         * assembler/MacroAssemblerX86_64.h:
490         (JSC::MacroAssemblerX86_64::call):
491         (JSC::MacroAssemblerX86_64::tailRecursiveCall):
492         (JSC::MacroAssemblerX86_64::makeTailRecursiveCall):
493
494 2011-04-26  Kevin Ollivier  <kevino@theolliviers.com>
495
496         Rubberstamped by Eric Seidel.
497
498         Enable waf to be used to build other ports
499         https://bugs.webkit.org/show_bug.cgi?id=58213
500
501         * wscript:
502
503 2011-04-26  Sam Weinig  <sam@webkit.org>
504
505         Reviewed by David Hyatt.
506
507         Remove Datagrid from the tree
508         https://bugs.webkit.org/show_bug.cgi?id=59543
509
510         * Configurations/FeatureDefines.xcconfig:
511         Remove feature.
512
513 2011-04-26  Adrienne Walker  <enne@google.com>
514
515         Reviewed by Geoffrey Garen.
516
517         Fix incorrect use of OwnPtr<T*> in GCActivityCallback
518         https://bugs.webkit.org/show_bug.cgi?id=59559
519
520         * runtime/GCActivityCallback.h:
521
522 2011-04-26  Xan Lopez  <xlopez@igalia.com>
523
524         Reviewed by Daniel Bates.
525
526         Unused but set variable warning in MacroAssembelX86_64
527         https://bugs.webkit.org/show_bug.cgi?id=59482
528
529         * assembler/MacroAssemblerX86_64.h:
530         (JSC::MacroAssemblerX86_64::call): do not declare the label
531         variable if we are not going to use it.
532         (JSC::MacroAssemblerX86_64::tailRecursiveCall): ditto.
533         (JSC::MacroAssemblerX86_64::makeTailRecursiveCall): ditto.
534
535 2011-04-26  Dan Bernstein  <mitz@apple.com>
536
537         Reviewed by Mark Rowe.
538
539         Choose the compiler based on the Xcode version for Snow Leopard debug builds.
540
541         * Configurations/Base.xcconfig:
542         * Configurations/CompilerVersion.xcconfig: Added.
543
544 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
545
546         Reviewed by Oliver Hunt.
547
548         Nixed special finalizer handling for WebCore strings
549         https://bugs.webkit.org/show_bug.cgi?id=59425
550         
551         SunSpider reports no change.
552         
553         Not needed anymore, since weak handles have finalizers.
554
555         * runtime/JSString.cpp:
556         (JSC::JSString::resolveRope):
557         (JSC::JSString::resolveRopeSlowCase):
558         (JSC::JSString::outOfMemory):
559         (JSC::JSString::substringFromRope):
560         (JSC::JSString::replaceCharacter): Updated for removal of union.
561
562         * runtime/JSString.h:
563         (JSC::RopeBuilder::JSString):
564         (JSC::RopeBuilder::~JSString):
565         (JSC::RopeBuilder::appendStringInConstruct):
566         (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): No need for
567         union or special constructor anymore.
568
569 2011-04-26  Gabor Loki  <loki@webkit.org>
570
571         Reviewed by Csaba Osztrogonác.
572
573         Speeding up SVG filters with multicore (SMP) support
574         https://bugs.webkit.org/show_bug.cgi?id=43903
575
576         Some SVG filters execute a huge number of pixel manipulations, which
577         cannot be sped up by graphics accelerators, since their algorithm is
578         too complex. Using the power of Symmetric Multi Processing (SMP) we
579         can split up a task to smaller (data independent) tasks, which can be
580         executed independently.
581
582         The ParallelJobs framework provides a simple way for distributed
583         programming. The framework is based on WebKit's threading infrastructure,
584         Open Multi-Processing's (OpenMP) API, and libdispatch API.
585
586         * GNUmakefile.list.am:
587         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
588         * JavaScriptCore.xcodeproj/project.pbxproj:
589         * wtf/CMakeLists.txt:
590         * wtf/ParallelJobs.h: Added.
591         (WTF::ParallelJobs::ParallelJobs):
592         (WTF::ParallelJobs::numberOfJobs):
593         (WTF::ParallelJobs::parameterForJob):
594         (WTF::ParallelJobs::executeJobs):
595         * wtf/ParallelJobsGeneric.cpp: Added.
596         (WTF::ParallelEnvironment::ThreadPrivate::tryLockFor):
597         (WTF::ParallelEnvironment::ThreadPrivate::executeJob):
598         (WTF::ParallelEnvironment::ThreadPrivate::waitForFinish):
599         (WTF::ParallelEnvironment::ThreadPrivate::workerThread):
600         * wtf/ParallelJobsGeneric.h: Added.
601         (WTF::ParallelEnvironment::ParallelEnvironment):
602         (WTF::ParallelEnvironment::numberOfJobs):
603         (WTF::ParallelEnvironment::parameterForJob):
604         (WTF::ParallelEnvironment::executeJobs):
605         (WTF::ParallelEnvironment::ThreadPrivate::ThreadPrivate):
606         (WTF::ParallelEnvironment::ThreadPrivate::create):
607         * wtf/ParallelJobsLibdispatch.h: Added.
608         (WTF::ParallelEnvironment::ParallelEnvironment):
609         (WTF::ParallelEnvironment::numberOfJobs):
610         (WTF::ParallelEnvironment::parameterForJob):
611         (WTF::ParallelEnvironment::executeJobs):
612         * wtf/ParallelJobsOpenMP.h: Added.
613         (WTF::ParallelEnvironment::ParallelEnvironment):
614         (WTF::ParallelEnvironment::numberOfJobs):
615         (WTF::ParallelEnvironment::parameterForJob):
616         (WTF::ParallelEnvironment::executeJobs):
617         * wtf/Platform.h:
618         * wtf/wtf.pri:
619
620 2011-04-26  Mihai Parparita  <mihaip@chromium.org>
621
622         Reviewed by Adam Barth.
623
624         Turn off make built-in implicit rules for derived sources makefile
625         https://bugs.webkit.org/show_bug.cgi?id=59418
626         
627         We don't use any of make's built-in implicit rules, turning them off
628         speeds up parsing of the makefile.
629
630         * JavaScriptCore.xcodeproj/project.pbxproj:
631         * gyp/generate-derived-sources.sh:
632
633 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
634
635         Reviewed by Oliver Hunt.
636
637         Custom prototypes on DOM objects don't persist after garbage collection
638         https://bugs.webkit.org/show_bug.cgi?id=59412
639         
640         SunSpider reports no change.
641         
642         The hasCustomProperties() check didn't check for a custom prototype.
643
644         * runtime/JSObject.h:
645         (JSC::JSObject::hasCustomProperties): Changed to delegate to Structure
646         because it is the "truth" about an object's pedigree.
647
648         * runtime/Structure.cpp:
649         (JSC::Structure::Structure):
650         * runtime/Structure.h:
651         (JSC::Structure::didTransition): Track whether a Structure has ever
652         transitioned for any reason. If so, we have to assume that the object
653         holding it is custom in some way.
654
655 2011-04-25  Gavin Barraclough  <barraclough@apple.com>
656
657         Reviewed by Geoff Garen.
658
659         https://bugs.webkit.org/show_bug.cgi?id=59405
660         DFG JIT - add type speculation for integer & array types, for vars & args.
661
662         If a var or argument is used as the base for a GetByVal or PutByVal access
663         we are speculating that it is of type Array (we only generate code on the
664         speculative path to perform array accesses). By typing the var or args slot
665         as Array, and checking on entry to the function (in the case of args), and
666         each time the local is written to, we can avoid a type check at each point
667         the array is accessed. This will typically hoist type checks out of loops.
668
669         Similarly, any local that is incremented or decremented, or is the input or
670         output or a bitwise operator, is likely to be an integer. By typing the
671         local as int32 we can avoid speculation checks on access, and tagging when
672         writing to the slot. All accesses can become 32bit instead of 64.
673
674         * dfg/DFGByteCodeParser.cpp:
675         (JSC::DFG::ByteCodeParser::set):
676         (JSC::DFG::ByteCodeParser::predictArray):
677         (JSC::DFG::ByteCodeParser::predictInt32):
678         (JSC::DFG::ByteCodeParser::parseBlock):
679         * dfg/DFGGraph.h:
680         (JSC::DFG::PredictionSlot::PredictionSlot):
681         (JSC::DFG::Graph::Graph):
682         (JSC::DFG::Graph::predict):
683         (JSC::DFG::Graph::getPrediction):
684         * dfg/DFGJITCompiler.cpp:
685         (JSC::DFG::JITCompiler::compileFunction):
686         * dfg/DFGJITCompiler.h:
687         (JSC::DFG::JITCompiler::tagFor):
688         (JSC::DFG::JITCompiler::payloadFor):
689         * dfg/DFGNode.h:
690         * dfg/DFGNonSpeculativeJIT.cpp:
691         (JSC::DFG::NonSpeculativeJIT::compile):
692         * dfg/DFGSpeculativeJIT.cpp:
693         (JSC::DFG::SpeculativeJIT::compile):
694         (JSC::DFG::SpeculativeJIT::checkArgumentTypes):
695         (JSC::DFG::SpeculativeJIT::initializeVariableTypes):
696         * dfg/DFGSpeculativeJIT.h:
697         * runtime/Executable.cpp:
698         (JSC::tryDFGCompile):
699
700 2011-04-25  David Levin  <levin@chromium.org>
701
702         Reviewed by James Robinson.
703
704         Fix OwnPtr strict mode violation in MessageQueue.h
705         https://bugs.webkit.org/show_bug.cgi?id=59400
706
707         * wtf/MessageQueue.h:
708         (WTF::::waitForMessage):
709         (WTF::::waitForMessageFilteredWithTimeout):
710         (WTF::::tryGetMessage):
711
712 2011-04-25  Adam Barth  <abarth@webkit.org>
713
714         Reviewed by Darin Adler.
715
716         JavaScriptCore should play nice strict OwnPtrs
717         https://bugs.webkit.org/show_bug.cgi?id=59401
718
719         * dfg/DFGByteCodeParser.cpp:
720         (JSC::DFG::ByteCodeParser::parse):
721         * heap/Heap.cpp:
722         (JSC::TypeCounter::TypeCounter):
723         * jit/JITStubs.cpp:
724         (JSC::JITThunks::JITThunks):
725         * parser/JSParser.cpp:
726         (JSC::JSParser::Scope::Scope):
727         * yarr/YarrJIT.cpp:
728         (JSC::Yarr::YarrGenerator::GenerationState::addParenthesesTail):
729
730 2011-04-25  Mark Rowe  <mrowe@apple.com>
731
732         Build fix.
733
734         * wtf/ListHashSet.h:
735
736 2011-04-25  Gavin Barraclough  <barraclough@apple.com>
737
738         Reviewed by Oliver Hunt.
739
740         Bug 59370 - DFG JIT - fix leak of BlocksBlocks
741         (put the blocks immediately into an OwnPtr).
742
743         * dfg/DFGByteCodeParser.cpp:
744         (JSC::DFG::ByteCodeParser::parse):
745
746 2011-04-25  James Robinson  <jamesr@chromium.org>
747
748         Reviewed by David Levin.
749
750         Fix strict OwnPtr violations in ListHashSet and RenderLayerCompositor
751         https://bugs.webkit.org/show_bug.cgi?id=59353
752
753         * wtf/ListHashSet.h:
754         (WTF::::ListHashSet):
755
756 2011-04-25  David Levin  <levin@chromium.org>
757
758         Reviewed by Adam Barth.
759
760         Fix PassOwnPtr issues in Structure and JSGlobalData.cpp
761         https://bugs.webkit.org/show_bug.cgi?id=59347
762
763         * runtime/JSGlobalData.cpp:
764         (JSC::JSGlobalData::JSGlobalData):
765         * runtime/Structure.cpp:
766         (JSC::Structure::copyPropertyTable):
767         (JSC::Structure::createPropertyMap):
768         * runtime/Structure.h:
769
770 2011-04-25  Oliver Hunt  <oliver@apple.com>
771
772         Reviewed by Geoffrey Garen.
773
774         Make ClassInfo required when creating a Structure
775         https://bugs.webkit.org/show_bug.cgi?id=59340
776
777         Add ClassInfo to all those types which currently don't
778         have it, and add an assertion to Structure::create to
779         ensure that the provided classInfo is not null.
780
781         * runtime/Executable.h:
782         (JSC::EvalExecutable::createStructure):
783         (JSC::ProgramExecutable::createStructure):
784         (JSC::FunctionExecutable::createStructure):
785         * runtime/GetterSetter.cpp:
786         * runtime/GetterSetter.h:
787         (JSC::GetterSetter::createStructure):
788         * runtime/JSAPIValueWrapper.cpp:
789         * runtime/JSAPIValueWrapper.h:
790         (JSC::JSAPIValueWrapper::createStructure):
791         * runtime/JSCell.cpp:
792         * runtime/JSCell.h:
793         * runtime/JSString.cpp:
794         * runtime/JSString.h:
795         (JSC::RopeBuilder::createStructure):
796         * runtime/Structure.h:
797         (JSC::Structure::create):
798         (JSC::JSCell::createDummyStructure):
799
800 2011-04-25  David Levin  <levin@chromium.org>
801
802         Reviewed by Adam Barth.
803
804         PropertyMapHashTable.h should use adoptPtr instead of implicit conversions to PassRefPtr.
805         https://bugs.webkit.org/show_bug.cgi?id=59342
806
807         This patch is to prepare for the strict OwnPtr hack-a-thon.
808
809         * runtime/PropertyMapHashTable.h:
810         (JSC::PropertyTable::copy):
811
812 2011-04-25  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
813
814         Reviewed by Gavin Barraclough.
815
816         Rationalize MacroAssembler branch methods
817         https://bugs.webkit.org/show_bug.cgi?id=58950
818
819         split out the 'Condition' enum into 'RelationalCondition' and 'ResultCondition' 
820         and apply related changes (only for SH4 platforms).
821
822         * assembler/MacroAssemblerSH4.cpp:
823         * assembler/MacroAssemblerSH4.h:
824         (JSC::MacroAssemblerSH4::compare32):
825         (JSC::MacroAssemblerSH4::branch32WithUnalignedHalfWords):
826         (JSC::MacroAssemblerSH4::branchDouble):
827         (JSC::MacroAssemblerSH4::branch32):
828         (JSC::MacroAssemblerSH4::branchTest8):
829         (JSC::MacroAssemblerSH4::branch8):
830         (JSC::MacroAssemblerSH4::branchTruncateDoubleToInt32):
831         (JSC::MacroAssemblerSH4::test8):
832         (JSC::MacroAssemblerSH4::branch16):
833         (JSC::MacroAssemblerSH4::branchTest32):
834         (JSC::MacroAssemblerSH4::branchAdd32):
835         (JSC::MacroAssemblerSH4::branchMul32):
836         (JSC::MacroAssemblerSH4::branchSub32):
837         (JSC::MacroAssemblerSH4::branchOr32):
838         (JSC::MacroAssemblerSH4::branchConvertDoubleToInt32):
839         (JSC::MacroAssemblerSH4::branchPtrWithPatch):
840         (JSC::MacroAssemblerSH4::SH4Condition):
841         * assembler/SH4Assembler.h:
842         (JSC::SH4Assembler::cmpEqImmR0):
843
844 2011-04-25  Adam Barth  <abarth@webkit.org>
845
846         Reviewed by Eric Seidel.
847
848         PropertyMapHashTable should work with strict OwnPtr
849         https://bugs.webkit.org/show_bug.cgi?id=59337
850
851         This patch is in preparation for the strict OwnPtr hack-a-thon.
852
853         * runtime/PropertyMapHashTable.h:
854         (JSC::PropertyTable::PropertyTable):
855         (JSC::PropertyTable::addDeletedOffset):
856
857 2011-04-25  Geoffrey Garen  <ggaren@apple.com>
858
859         Reviewed by Sam Weinig.
860
861         Nixed MarkStack::deprecatedAppend, since it has no clients left.
862
863         * heap/MarkStack.h:
864
865 2011-04-23  Gavin Barraclough  <barraclough@apple.com>
866
867         Reviewed by Oliver Hunt.
868
869         Bug 59287 - DFG JIT - Handle temporaries as vars, allowing support for ?:
870
871         SetLocals to temporaries will only be generated if they are used within other
872         blocks, due to the SSA based DCE.
873
874         * dfg/DFGByteCodeParser.cpp:
875         (JSC::DFG::ByteCodeParser::ByteCodeParser):
876         (JSC::DFG::ByteCodeParser::get):
877         (JSC::DFG::ByteCodeParser::set):
878         (JSC::DFG::ByteCodeParser::getLocal):
879         (JSC::DFG::ByteCodeParser::setLocal):
880         (JSC::DFG::ByteCodeParser::parseBlock):
881         (JSC::DFG::ByteCodeParser::processPhiStack):
882         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
883         (JSC::DFG::ByteCodeParser::parse):
884         * dfg/DFGGraph.h:
885         (JSC::DFG::BasicBlock::BasicBlock):
886
887 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
888
889         Reviewed by Sam Weinig & Geoff Garen.
890
891         Bug 59266 - DFG JIT - Add SSA style DCE
892
893         This works by making GetLocal nodes reference SetLocal nodes from prior blocks,
894         via intermediate Phi nodes. Whenever we add a GetLocal to the graph, also add a
895         matching child Phi, and add the Phi to a work queue to add references to prior
896         definitions once we have the full CFG & can determine predecessors. This process
897         is iterative, inserting new phis into predecessors as necessary.
898
899         * dfg/DFGByteCodeParser.cpp:
900         (JSC::DFG::ByteCodeParser::getVariable):
901         (JSC::DFG::ByteCodeParser::setVariable):
902         (JSC::DFG::ByteCodeParser::getArgument):
903         (JSC::DFG::ByteCodeParser::setArgument):
904         (JSC::DFG::ByteCodeParser::parseBlock):
905         (JSC::DFG::ByteCodeParser::processWorkQueue):
906         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
907         (JSC::DFG::ByteCodeParser::parse):
908         * dfg/DFGGraph.cpp:
909         (JSC::DFG::Graph::dump):
910         (JSC::DFG::Graph::refChildren):
911         * dfg/DFGGraph.h:
912         (JSC::DFG::Graph::ref):
913         * dfg/DFGNode.h:
914         (JSC::DFG::Node::ref):
915         * dfg/DFGNonSpeculativeJIT.cpp:
916         (JSC::DFG::NonSpeculativeJIT::compile):
917         * dfg/DFGScoreBoard.h:
918         (JSC::DFG::ScoreBoard::~ScoreBoard):
919         (JSC::DFG::ScoreBoard::dump):
920         * dfg/DFGSpeculativeJIT.cpp:
921         (JSC::DFG::SpeculativeJIT::compile):
922
923 2011-04-22  Vitaly Repeshko  <vitalyr@chromium.org>
924
925         Reviewed by Adam Barth.
926
927         Add missing default constructors for HashMap iterator specializations.
928         https://bugs.webkit.org/show_bug.cgi?id=59250
929
930         * wtf/HashIterators.h:
931         * wtf/HashTable.h:
932         (WTF::HashTableConstIterator::HashTableConstIterator): Added cast
933         to help compiler find the function template.
934
935 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
936
937         Reviewed by Sam Weinig.
938
939         Bug 59262 - DFG JIT - reduce size of VariableRecord
940
941         We never need both the get & set node, only the most recent
942         (which is always a set, if both exist).
943
944         * dfg/DFGByteCodeParser.cpp:
945         (JSC::DFG::ByteCodeParser::getVariable):
946         (JSC::DFG::ByteCodeParser::setVariable):
947         (JSC::DFG::ByteCodeParser::getArgument):
948         (JSC::DFG::ByteCodeParser::setArgument):
949         (JSC::DFG::ByteCodeParser::parseBlock):
950         * dfg/DFGGraph.h:
951         (JSC::DFG::VariableRecord::VariableRecord):
952
953 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
954
955         Reviewed by Geoffrey Garen.
956
957         Bug 59254 - DFG JIT - retain VariableRecords for args/var in all basic blocks,
958         such that this information is available for DCE.  Also, since this enlarges the
959         size of BasicBlock, make Graph hold a vector of pointers to basic blocks, not a
960         vector of blocks.
961
962         * dfg/DFGByteCodeParser.cpp:
963         (JSC::DFG::ByteCodeParser::ByteCodeParser):
964         (JSC::DFG::ByteCodeParser::get):
965         (JSC::DFG::ByteCodeParser::set):
966         (JSC::DFG::ByteCodeParser::getVariable):
967         (JSC::DFG::ByteCodeParser::setVariable):
968         (JSC::DFG::ByteCodeParser::getArgument):
969         (JSC::DFG::ByteCodeParser::setArgument):
970         (JSC::DFG::ByteCodeParser::parseBlock):
971         (JSC::DFG::ByteCodeParser::setupPredecessors):
972         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
973         (JSC::DFG::ByteCodeParser::parse):
974         * dfg/DFGGraph.cpp:
975         (JSC::DFG::Graph::dump):
976         * dfg/DFGGraph.h:
977         (JSC::DFG::VariableRecord::VariableRecord):
978         (JSC::DFG::BasicBlock::BasicBlock):
979         (JSC::DFG::BasicBlock::getBytecodeBegin):
980         (JSC::DFG::Graph::blockIndexForBytecodeOffset):
981         (JSC::DFG::Graph::blockForBytecodeOffset):
982         * dfg/DFGNonSpeculativeJIT.cpp:
983         (JSC::DFG::NonSpeculativeJIT::compile):
984         * dfg/DFGSpeculativeJIT.cpp:
985         (JSC::DFG::SpeculativeJIT::compile):
986         * dfg/DFGSpeculativeJIT.h:
987         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
988
989 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
990
991         Errk, build fix.
992
993         * dfg/DFGSpeculativeJIT.cpp:
994         (JSC::DFG::SpeculativeJIT::compile):
995
996 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
997
998         Reviewed by Sam Weinig.
999
1000         Quick cleanup to SpeculativeJIT/NonSpeculativeJIT compile loop,
1001         move out the call to checkConsistency().
1002
1003         * dfg/DFGNonSpeculativeJIT.cpp:
1004         (JSC::DFG::NonSpeculativeJIT::compile):
1005         * dfg/DFGSpeculativeJIT.cpp:
1006         (JSC::DFG::SpeculativeJIT::compile):
1007         * dfg/DFGSpeculativeJIT.h:
1008         (JSC::DFG::SpeculativeJIT::SpeculativeJIT):
1009         (JSC::DFG::SpeculativeJIT::terminateSpeculativeExecution):
1010
1011 2011-04-21  Vitaly Repeshko  <vitalyr@chromium.org>
1012
1013         Reviewed by Adam Barth.
1014
1015         Provide default constructors for HashMap iterators.
1016         https://bugs.webkit.org/show_bug.cgi?id=59151
1017
1018         These will be used to implement an iterator over EventTarget's
1019         listeners.
1020
1021         * wtf/HashTable.h:
1022         (WTF::HashTableConstIteratorAdapter::HashTableConstIteratorAdapter):
1023         (WTF::HashTableIteratorAdapter::HashTableIteratorAdapter):
1024
1025 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
1026
1027         Reviewed by Geoff Garen.
1028
1029         Bug 59232 - DFG JIT - Add predecessor links to BasicBlocks
1030
1031         These will be necessary for DCE support.
1032         Also factor allocateVirtualRegisters out into its own method.
1033
1034         * dfg/DFGByteCodeParser.cpp:
1035         (JSC::DFG::ByteCodeParser::setupPredecessors):
1036         (JSC::DFG::ByteCodeParser::allocateVirtualRegisters):
1037         (JSC::DFG::ByteCodeParser::parse):
1038         * dfg/DFGGraph.h:
1039         (JSC::DFG::Graph::blockForBytecodeOffset):
1040         * dfg/DFGNode.h:
1041         (JSC::DFG::Node::isTerminal):
1042
1043 2011-04-22  Oliver Hunt  <oliver@apple.com>
1044
1045         Reviewed by Geoffrey Garen.
1046
1047         Object.create creates uncachable objects
1048         https://bugs.webkit.org/show_bug.cgi?id=59164
1049
1050         Use the prototype object's inheritorID, as we
1051         should always have done
1052
1053         * runtime/JSGlobalObject.cpp:
1054         (JSC::JSGlobalObject::reset):
1055         (JSC::JSGlobalObject::visitChildren):
1056         * runtime/JSGlobalObject.h:
1057         (JSC::JSGlobalObject::nullPrototypeObjectStructure):
1058         * runtime/ObjectConstructor.cpp:
1059         (JSC::objectConstructorCreate):
1060
1061 2011-04-22  Gavin Barraclough  <barraclough@apple.com>
1062
1063         Reviewed by Sam Weinig.
1064
1065         Bug 59222 - DFG JIT - don't allocate virtual registers to nodes with no result
1066
1067         We currently allocate virtual registers to nodes which have no result - these are
1068         clearly unused, and may result in us allocating a larger than necessary stack frame.
1069
1070         Encapsulate Node::virtualRegister such that we can ASSERT this is only called on
1071         nodes that have results, and improve the quality of output from the consistency check.
1072
1073         * dfg/DFGByteCodeParser.cpp:
1074         (JSC::DFG::ByteCodeParser::parse):
1075         * dfg/DFGGraph.cpp:
1076         (JSC::DFG::Graph::dump):
1077         * dfg/DFGGraph.h:
1078         (JSC::DFG::Graph::ref):
1079         (JSC::DFG::Graph::deref):
1080         * dfg/DFGJITCodeGenerator.cpp:
1081         (JSC::DFG::JITCodeGenerator::fillInteger):
1082         (JSC::DFG::JITCodeGenerator::fillDouble):
1083         (JSC::DFG::JITCodeGenerator::fillJSValue):
1084         (JSC::DFG::JITCodeGenerator::dump):
1085         (JSC::DFG::JITCodeGenerator::checkConsistency):
1086         * dfg/DFGJITCodeGenerator.h:
1087         (JSC::DFG::JITCodeGenerator::canReuse):
1088         (JSC::DFG::JITCodeGenerator::isFilled):
1089         (JSC::DFG::JITCodeGenerator::isFilledDouble):
1090         (JSC::DFG::JITCodeGenerator::use):
1091         (JSC::DFG::JITCodeGenerator::integerResult):
1092         (JSC::DFG::JITCodeGenerator::noResult):
1093         (JSC::DFG::JITCodeGenerator::cellResult):
1094         (JSC::DFG::JITCodeGenerator::jsValueResult):
1095         (JSC::DFG::JITCodeGenerator::doubleResult):
1096         (JSC::DFG::JITCodeGenerator::initConstantInfo):
1097         * dfg/DFGJITCompiler.cpp:
1098         (JSC::DFG::JITCompiler::fillNumericToDouble):
1099         (JSC::DFG::JITCompiler::fillInt32ToInteger):
1100         (JSC::DFG::JITCompiler::fillToJS):
1101         (JSC::DFG::JITCompiler::jumpFromSpeculativeToNonSpeculative):
1102         * dfg/DFGNode.h:
1103         (JSC::DFG::Node::Node):
1104         (JSC::DFG::Node::hasResult):
1105         (JSC::DFG::Node::virtualRegister):
1106         (JSC::DFG::Node::setVirtualRegister):
1107         (JSC::DFG::Node::refCount):
1108         (JSC::DFG::Node::ref):
1109         (JSC::DFG::Node::deref):
1110         (JSC::DFG::Node::adjustedRefCount):
1111         * dfg/DFGNonSpeculativeJIT.cpp:
1112         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
1113         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
1114         (JSC::DFG::NonSpeculativeJIT::compile):
1115         * dfg/DFGScoreBoard.h:
1116         (JSC::DFG::ScoreBoard::use):
1117         * dfg/DFGSpeculativeJIT.cpp:
1118         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
1119         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
1120         (JSC::DFG::SpeculativeJIT::compile):
1121
1122 2011-04-22  Sam Weinig  <sam@webkit.org>
1123
1124         Reviewed by Gavin Barraclough and Oliver Hunt.
1125
1126         Arrays should participate in global object forwarding fun
1127         https://bugs.webkit.org/show_bug.cgi?id=59215
1128
1129         * runtime/JSGlobalObject.h:
1130         (JSC::constructEmptyArray):
1131         (JSC::constructArray):
1132         Add variants of constructArray that take a global object.
1133
1134 2011-04-22  Sheriff Bot  <webkit.review.bot@gmail.com>
1135
1136         Unreviewed, rolling out r84650 and r84654.
1137         http://trac.webkit.org/changeset/84650
1138         http://trac.webkit.org/changeset/84654
1139         https://bugs.webkit.org/show_bug.cgi?id=59218
1140
1141         Broke Windows build (Requested by bweinstein on #webkit).
1142
1143         * API/JSCallbackObjectFunctions.h:
1144         (JSC::::init):
1145         * JavaScriptCore.exp:
1146         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1147         * heap/Handle.h:
1148         (JSC::HandleBase::operator!):
1149         (JSC::HandleBase::operator UnspecifiedBoolType*):
1150         (JSC::HandleTypes::getFromSlot):
1151         * heap/HandleHeap.cpp:
1152         (JSC::HandleHeap::markStrongHandles):
1153         (JSC::HandleHeap::markWeakHandles):
1154         (JSC::HandleHeap::finalizeWeakHandles):
1155         (JSC::HandleHeap::writeBarrier):
1156         (JSC::HandleHeap::protectedGlobalObjectCount):
1157         (JSC::HandleHeap::isValidWeakNode):
1158         * heap/HandleHeap.h:
1159         (JSC::HandleHeap::copyWeak):
1160         (JSC::HandleHeap::makeWeak):
1161         (JSC::HandleHeap::Node::slot):
1162         * heap/HandleStack.cpp:
1163         (JSC::HandleStack::mark):
1164         (JSC::HandleStack::grow):
1165         * heap/HandleStack.h:
1166         (JSC::HandleStack::zapTo):
1167         (JSC::HandleStack::push):
1168         * heap/Heap.cpp:
1169         (JSC::HandleHeap::protectedObjectTypeCounts):
1170         * heap/Local.h:
1171         (JSC::::set):
1172         * heap/Strong.h:
1173         (JSC::Strong::set):
1174         * heap/Weak.h:
1175         (JSC::Weak::set):
1176         * runtime/StructureTransitionTable.h:
1177         (JSC::StructureTransitionTable::singleTransition):
1178         (JSC::StructureTransitionTable::setSingleTransition):
1179         * runtime/WeakGCMap.h:
1180         (JSC::WeakGCMap::add):
1181         (JSC::WeakGCMap::set):
1182         * runtime/WriteBarrier.h:
1183
1184 2011-04-22  Brian Weinstein  <bweinstein@apple.com>
1185
1186         Part of Windows build fix from r84650.
1187
1188         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
1189
1190 2011-04-22  Oliver Hunt  <oliver@apple.com>
1191
1192         Reviewed by Geoffrey Garen.
1193
1194         Make it harder to use HandleSlot incorrectly
1195         https://bugs.webkit.org/show_bug.cgi?id=59205
1196
1197         Just add a little type fudging to make it harder to
1198         incorrectly assign through a HandleSlot.
1199
1200         * API/JSCallbackObjectFunctions.h:
1201         (JSC::::init):
1202         * JavaScriptCore.exp:
1203         * heap/Handle.h:
1204         (JSC::HandleBase::operator!):
1205         (JSC::HandleBase::operator UnspecifiedBoolType*):
1206         (JSC::HandleTypes::getFromSlot):
1207         * heap/HandleHeap.cpp:
1208         (JSC::HandleHeap::markStrongHandles):
1209         (JSC::HandleHeap::markWeakHandles):
1210         (JSC::HandleHeap::finalizeWeakHandles):
1211         (JSC::HandleHeap::writeBarrier):
1212         (JSC::HandleHeap::protectedGlobalObjectCount):
1213         (JSC::HandleHeap::isValidWeakNode):
1214         * heap/HandleHeap.h:
1215         (JSC::HandleHeap::copyWeak):
1216         (JSC::HandleHeap::makeWeak):
1217         (JSC::HandleHeap::Node::slot):
1218         * heap/HandleStack.cpp:
1219         (JSC::HandleStack::mark):
1220         (JSC::HandleStack::grow):
1221         * heap/HandleStack.h:
1222         (JSC::HandleStack::zapTo):
1223         (JSC::HandleStack::push):
1224         * heap/Heap.cpp:
1225         (JSC::HandleHeap::protectedObjectTypeCounts):
1226         * heap/Local.h:
1227         (JSC::::set):
1228         * heap/Strong.h:
1229         (JSC::Strong::set):
1230         * heap/Weak.h:
1231         (JSC::Weak::set):
1232         * runtime/StructureTransitionTable.h:
1233         (JSC::StructureTransitionTable::singleTransition):
1234         (JSC::StructureTransitionTable::setSingleTransition):
1235         * runtime/WeakGCMap.h:
1236         (JSC::WeakGCMap::add):
1237         (JSC::WeakGCMap::set):
1238         * runtime/WriteBarrier.h:
1239         (JSC::OpaqueJSValue::toJSValue):
1240         (JSC::OpaqueJSValue::toJSValueRef):
1241         (JSC::OpaqueJSValue::fromJSValue):
1242
1243 2011-04-22  Patrick Gansterer  <paroga@webkit.org>
1244
1245         Unreviewed. Build fix for ENABLE(INTERPRETER) after r84556.
1246
1247         * bytecode/CodeBlock.cpp:
1248         (JSC::CodeBlock::visitAggregate):
1249
1250 2011-04-21  Sheriff Bot  <webkit.review.bot@gmail.com>
1251
1252         Unreviewed, rolling out r84583.
1253         http://trac.webkit.org/changeset/84583
1254         https://bugs.webkit.org/show_bug.cgi?id=59173
1255
1256         "broke
1257         http://trac.webkit.org/export/84593/trunk/LayoutTests/fast/js
1258         /Object-create.html" (Requested by ggaren on #webkit).
1259
1260         * runtime/ObjectConstructor.cpp:
1261         (JSC::objectConstructorCreate):
1262
1263 2011-04-21  Maciej Stachowiak  <mjs@apple.com>
1264
1265         Reviewed by Adam Roben.
1266
1267         Add a feature define to allow <details> and <summary> to be disabled
1268         https://bugs.webkit.org/show_bug.cgi?id=59118
1269         <rdar://problem/9257045>
1270
1271         * Configurations/FeatureDefines.xcconfig:
1272
1273 2011-04-21  Oliver Hunt  <oliver@apple.com>
1274
1275         Reviewed by Geoffrey Garen.
1276
1277         Object.create creates uncachable objects
1278         https://bugs.webkit.org/show_bug.cgi?id=59164
1279
1280         Use the prototype object's inheritorID, as we
1281         should always have done
1282
1283         * runtime/ObjectConstructor.cpp:
1284         (JSC::objectConstructorCreate):
1285
1286 2011-04-21  Oliver Hunt  <oliver@apple.com>
1287
1288         Reviewed by Geoffrey Garen.
1289
1290         Start moving to a general visitor pattern for GC traversal
1291         https://bugs.webkit.org/show_bug.cgi?id=59141
1292
1293         This is just a rename:
1294             markChildren -> visitChildren
1295             markAggregate -> visitAggregate
1296             markStack -> visitor
1297             MarkStack -> typedef'd to SlotVisitor
1298
1299         * API/JSCallbackObject.h:
1300         (JSC::JSCallbackObjectData::visitChildren):
1301         (JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):
1302         (JSC::JSCallbackObject::visitChildren):
1303         * JavaScriptCore.exp:
1304         * bytecode/CodeBlock.cpp:
1305         (JSC::CodeBlock::visitStructures):
1306         (JSC::EvalCodeCache::visitAggregate):
1307         (JSC::CodeBlock::visitAggregate):
1308         * bytecode/CodeBlock.h:
1309         * bytecode/EvalCodeCache.h:
1310         * bytecode/Instruction.h:
1311         (JSC::PolymorphicAccessStructureList::visitAggregate):
1312         * bytecode/StructureStubInfo.cpp:
1313         (JSC::StructureStubInfo::visitAggregate):
1314         * bytecode/StructureStubInfo.h:
1315         * debugger/DebuggerActivation.cpp:
1316         (JSC::DebuggerActivation::visitChildren):
1317         * debugger/DebuggerActivation.h:
1318         * heap/HandleHeap.cpp:
1319         (JSC::WeakHandleOwner::isReachableFromOpaqueRoots):
1320         (JSC::HandleHeap::markStrongHandles):
1321         (JSC::HandleHeap::markWeakHandles):
1322         * heap/HandleHeap.h:
1323         * heap/HandleStack.cpp:
1324         (JSC::HandleStack::mark):
1325         * heap/HandleStack.h:
1326         * heap/Heap.cpp:
1327         (JSC::Heap::markProtectedObjects):
1328         (JSC::Heap::markTempSortVectors):
1329         (JSC::Heap::markRoots):
1330         * heap/Heap.h:
1331         * heap/MarkStack.cpp:
1332         (JSC::MarkStack::visitChildren):
1333         (JSC::MarkStack::drain):
1334         * heap/MarkStack.h:
1335         (JSC::HeapRootVisitor::HeapRootVisitor):
1336         (JSC::HeapRootVisitor::mark):
1337         (JSC::HeapRootVisitor::visitor):
1338         * heap/MarkedSpace.h:
1339         * runtime/ArgList.cpp:
1340         (JSC::MarkedArgumentBuffer::markLists):
1341         * runtime/ArgList.h:
1342         * runtime/Arguments.cpp:
1343         (JSC::Arguments::visitChildren):
1344         * runtime/Arguments.h:
1345         * runtime/Executable.cpp:
1346         (JSC::EvalExecutable::visitChildren):
1347         (JSC::ProgramExecutable::visitChildren):
1348         (JSC::FunctionExecutable::visitChildren):
1349         * runtime/Executable.h:
1350         * runtime/GetterSetter.cpp:
1351         (JSC::GetterSetter::visitChildren):
1352         * runtime/GetterSetter.h:
1353         (JSC::GetterSetter::createStructure):
1354         * runtime/JSAPIValueWrapper.h:
1355         (JSC::JSAPIValueWrapper::createStructure):
1356         * runtime/JSActivation.cpp:
1357         (JSC::JSActivation::visitChildren):
1358         * runtime/JSActivation.h:
1359         * runtime/JSArray.cpp:
1360         (JSC::JSArray::visitChildren):
1361         * runtime/JSArray.h:
1362         (JSC::JSArray::visitDirect):
1363         * runtime/JSCell.h:
1364         (JSC::JSCell::JSCell::visitChildren):
1365         * runtime/JSFunction.cpp:
1366         (JSC::JSFunction::visitChildren):
1367         * runtime/JSFunction.h:
1368         * runtime/JSGlobalObject.cpp:
1369         (JSC::visitIfNeeded):
1370         (JSC::JSGlobalObject::visitChildren):
1371         * runtime/JSGlobalObject.h:
1372         * runtime/JSONObject.cpp:
1373         * runtime/JSObject.cpp:
1374         (JSC::JSObject::visitChildren):
1375         * runtime/JSObject.h:
1376         (JSC::JSObject::visitDirect):
1377         * runtime/JSPropertyNameIterator.cpp:
1378         (JSC::JSPropertyNameIterator::visitChildren):
1379         * runtime/JSPropertyNameIterator.h:
1380         (JSC::JSPropertyNameIterator::createStructure):
1381         * runtime/JSStaticScopeObject.cpp:
1382         (JSC::JSStaticScopeObject::visitChildren):
1383         * runtime/JSStaticScopeObject.h:
1384         * runtime/JSTypeInfo.h:
1385         (JSC::TypeInfo::TypeInfo):
1386         (JSC::TypeInfo::overridesVisitChildren):
1387         * runtime/JSWrapperObject.cpp:
1388         (JSC::JSWrapperObject::visitChildren):
1389         * runtime/JSWrapperObject.h:
1390         * runtime/JSZombie.h:
1391         (JSC::JSZombie::visitChildren):
1392         * runtime/NativeErrorConstructor.cpp:
1393         (JSC::NativeErrorConstructor::visitChildren):
1394         * runtime/NativeErrorConstructor.h:
1395         * runtime/RegExpObject.cpp:
1396         (JSC::RegExpObject::visitChildren):
1397         * runtime/RegExpObject.h:
1398         * runtime/ScopeChain.cpp:
1399         (JSC::ScopeChainNode::visitChildren):
1400         * runtime/ScopeChain.h:
1401         * runtime/SmallStrings.cpp:
1402         (JSC::SmallStrings::visitChildren):
1403         * runtime/SmallStrings.h:
1404         * runtime/Structure.cpp:
1405         (JSC::Structure::Structure):
1406         (JSC::Structure::visitChildren):
1407         * runtime/Structure.h:
1408         * runtime/StructureChain.cpp:
1409         (JSC::StructureChain::visitChildren):
1410         * runtime/StructureChain.h:
1411         (JSC::StructureChain::createStructure):
1412
1413 2011-04-21  Sheriff Bot  <webkit.review.bot@gmail.com>
1414
1415         Unreviewed, rolling out r84548.
1416         http://trac.webkit.org/changeset/84548
1417         https://bugs.webkit.org/show_bug.cgi?id=59144
1418
1419         Broke chromium-win build (Requested by aklein on #webkit).
1420
1421         * wtf/Platform.h:
1422
1423 2011-04-21  Adam Klein  <adamk@chromium.org>
1424
1425         Reviewed by David Levin.
1426
1427         [fileapi] Worker File API calls that create Blobs fail in debug builds due to random number generator thread assertion
1428         https://bugs.webkit.org/show_bug.cgi?id=55728
1429
1430         Enable WTF_MULTIPLE_THREADS for Chromium.
1431
1432         * wtf/Platform.h:
1433
1434 2011-04-20  Michael Saboff  <msaboff@apple.com>
1435
1436         Reviewed by Geoff Garen.
1437
1438         JSString::resolveRope inefficient for common 2 fiber case
1439         https://bugs.webkit.org/show_bug.cgi?id=58994
1440
1441         Split JSString::resolveRope into three routines.
1442         resolveRope allocates the new buffer and handles the 1 or 2
1443         fiber case with single level fibers.
1444         resolveRopeSlowCase handles the general case.
1445         outOfMemory handles the rare out of memory exception case.
1446
1447         * runtime/JSString.cpp:
1448         (JSC::JSString::resolveRope):
1449         (JSC::JSString::resolveRopeSlowCase):
1450         (JSC::JSString::outOfMemory):
1451         * runtime/JSString.h:
1452
1453 2011-04-20  Adam Klein  <adamk@chromium.org>
1454
1455         Reviewed by David Levin.
1456
1457         Rename all uses of JSC_MULTIPLE_THREADS under wtf/... to WTF_MULTIPLE_THREADS
1458         https://bugs.webkit.org/show_bug.cgi?id=59040
1459
1460         This will be used to fix https://bugs.webkit.org/show_bug.cgi?id=55728
1461         by enabling WTF_MULTIPLE_THREADS for Chromium.
1462
1463         * wtf/CryptographicallyRandomNumber.cpp:
1464         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomNumber):
1465         (WTF::ARC4Stream::ARC4RandomNumberGenerator::randomValues):
1466         * wtf/FastMalloc.cpp:
1467         * wtf/Platform.h:
1468         Enable WTF_MULTIPLE_THREADS whenever JSC_MULTIPLE_THREADS is enabled.
1469         * wtf/RandomNumber.cpp:
1470         (WTF::randomNumber):
1471         * wtf/RefCountedLeakCounter.cpp:
1472         (WTF::RefCountedLeakCounter::increment):
1473         (WTF::RefCountedLeakCounter::decrement):
1474         * wtf/dtoa.cpp:
1475         (WTF::pow5mult):
1476
1477 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1478
1479         Rubber stamped by Geoff Garen
1480
1481         Bug 59069 - DFG JIT - register allocate r8, r9, r10
1482
1483         * dfg/DFGJITCompiler.h:
1484         (JSC::DFG::JITCompiler::gprToRegisterID):
1485
1486 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1487
1488         Build fix - revert accidental change.
1489
1490         * wtf/Platform.h:
1491
1492 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1493
1494         Reviewed by Sam Weinig.
1495
1496         Add SAMPLING_FLAGS tool to DFG JIT.
1497
1498         * bytecode/SamplingTool.h:
1499         (JSC::SamplingFlags::addressOfFlags):
1500         * dfg/DFGJITCompiler.cpp:
1501         (JSC::DFG::JITCompiler::setSamplingFlag):
1502         (JSC::DFG::JITCompiler::clearSamplingFlag):
1503         * dfg/DFGJITCompiler.h:
1504         * jit/JITInlineMethods.h:
1505         (JSC::JIT::setSamplingFlag):
1506         (JSC::JIT::clearSamplingFlag):
1507         * wtf/Platform.h:
1508
1509 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1510
1511         Reviewed by Oliver Hunt.
1512
1513         Bug 59022 - DFG JIT - Optimize branch-on-relational-compare
1514
1515         If a relational compare (< or <=) is immediately followed by a branch,
1516         we can combine the two, avoiding generation of a boolean into a register.
1517
1518         * assembler/MacroAssemblerX86Common.h:
1519         (JSC::MacroAssemblerX86Common::branch32):
1520         (JSC::MacroAssemblerX86Common::invert):
1521         (JSC::MacroAssemblerX86Common::commute):
1522         * dfg/DFGNode.h:
1523         (JSC::DFG::Node::adjustedRefCount):
1524         * dfg/DFGSpeculativeJIT.cpp:
1525         (JSC::DFG::SpeculativeJIT::compilePeepHoleBranch):
1526         (JSC::DFG::SpeculativeJIT::compile):
1527         * dfg/DFGSpeculativeJIT.h:
1528         (JSC::DFG::SpeculativeJIT::isJSConstantWithInt32Value):
1529         (JSC::DFG::SpeculativeJIT::detectPeepHoleBranch):
1530
1531 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1532
1533         ARMv7 build fix II.
1534
1535         * jit/JITOpcodes32_64.cpp:
1536         (JSC::JIT::softModulo):
1537
1538 2011-04-20  Gavin Barraclough  <barraclough@apple.com>
1539
1540         ARMv7 build fix.
1541
1542         * assembler/MacroAssemblerARM.h:
1543         (JSC::MacroAssemblerARM::test8):
1544
1545 2011-04-19  Gavin Barraclough  <barraclough@apple.com>
1546
1547         Reviewed by Oliver Hunt.
1548
1549         Rationalize MacroAssembler branch methods
1550         https://bugs.webkit.org/show_bug.cgi?id=58950
1551
1552         The MacroAssembler currently exposes x86's weird behaviour that the 'setcc'
1553         instruction only sets the low 8 bits of a register. Stop that.
1554
1555         Having done so, to clarify remove the 'set32' prefix from test & compare
1556         instructions - these methods all now set a full 32/64 bit register (Ptr size).
1557         The size in the function name should indicate the amount of data being compared.
1558
1559         Also split out the 'Condition' enum into 'RelationalCondition' and
1560         'ResultCondition'. The former is used in binary comparison, the latter is a unary
1561         condition check on the result of an operation.
1562
1563         * JavaScriptCore.xcodeproj/project.pbxproj:
1564         * assembler/MacroAssembler.h:
1565         (JSC::MacroAssembler::branchPtr):
1566         (JSC::MacroAssembler::branch32):
1567         (JSC::MacroAssembler::branch16):
1568         (JSC::MacroAssembler::branchTestPtr):
1569         (JSC::MacroAssembler::comparePtr):
1570         (JSC::MacroAssembler::branchAddPtr):
1571         (JSC::MacroAssembler::branchSubPtr):
1572         (JSC::MacroAssembler::branchTest8):
1573         * assembler/MacroAssemblerARM.h:
1574         (JSC::MacroAssemblerARM::branch8):
1575         (JSC::MacroAssemblerARM::branch32):
1576         (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords):
1577         (JSC::MacroAssemblerARM::branch16):
1578         (JSC::MacroAssemblerARM::branchTest8):
1579         (JSC::MacroAssemblerARM::branchTest32):
1580         (JSC::MacroAssemblerARM::branchAdd32):
1581         (JSC::MacroAssemblerARM::branchMul32):
1582         (JSC::MacroAssemblerARM::branchSub32):
1583         (JSC::MacroAssemblerARM::branchNeg32):
1584         (JSC::MacroAssemblerARM::branchOr32):
1585         (JSC::MacroAssemblerARM::compare32):
1586         (JSC::MacroAssemblerARM::test32):
1587         (JSC::MacroAssemblerARM::test8):
1588         (JSC::MacroAssemblerARM::branchPtrWithPatch):
1589         (JSC::MacroAssemblerARM::ARMCondition):
1590         * assembler/MacroAssemblerARMv7.h:
1591         (JSC::MacroAssemblerARMv7::branch32):
1592         (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords):
1593         (JSC::MacroAssemblerARMv7::branch16):
1594         (JSC::MacroAssemblerARMv7::branch8):
1595         (JSC::MacroAssemblerARMv7::branchTest32):
1596         (JSC::MacroAssemblerARMv7::branchTest8):
1597         (JSC::MacroAssemblerARMv7::branchAdd32):
1598         (JSC::MacroAssemblerARMv7::branchMul32):
1599         (JSC::MacroAssemblerARMv7::branchOr32):
1600         (JSC::MacroAssemblerARMv7::branchSub32):
1601         (JSC::MacroAssemblerARMv7::compare32):
1602         (JSC::MacroAssemblerARMv7::test32):
1603         (JSC::MacroAssemblerARMv7::test8):
1604         (JSC::MacroAssemblerARMv7::branchPtrWithPatch):
1605         (JSC::MacroAssemblerARMv7::makeBranch):
1606         (JSC::MacroAssemblerARMv7::armV7Condition):
1607         * assembler/MacroAssemblerMIPS.h:
1608         (JSC::MacroAssemblerMIPS::branch8):
1609         (JSC::MacroAssemblerMIPS::branch32):
1610         (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords):
1611         (JSC::MacroAssemblerMIPS::branch16):
1612         (JSC::MacroAssemblerMIPS::branchTest32):
1613         (JSC::MacroAssemblerMIPS::branchTest8):
1614         (JSC::MacroAssemblerMIPS::branchAdd32):
1615         (JSC::MacroAssemblerMIPS::branchMul32):
1616         (JSC::MacroAssemblerMIPS::branchSub32):
1617         (JSC::MacroAssemblerMIPS::branchOr32):
1618         (JSC::MacroAssemblerMIPS::compare32):
1619         (JSC::MacroAssemblerMIPS::test8):
1620         (JSC::MacroAssemblerMIPS::test32):
1621         (JSC::MacroAssemblerMIPS::branchPtrWithPatch):
1622         * assembler/MacroAssemblerX86.h:
1623         (JSC::MacroAssemblerX86::branch32):
1624         (JSC::MacroAssemblerX86::branchPtrWithPatch):
1625         * assembler/MacroAssemblerX86Common.h:
1626         (JSC::MacroAssemblerX86Common::branch8):
1627         (JSC::MacroAssemblerX86Common::branch32):
1628         (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords):
1629         (JSC::MacroAssemblerX86Common::branch16):
1630         (JSC::MacroAssemblerX86Common::branchTest32):
1631         (JSC::MacroAssemblerX86Common::branchTest8):
1632         (JSC::MacroAssemblerX86Common::branchAdd32):
1633         (JSC::MacroAssemblerX86Common::branchMul32):
1634         (JSC::MacroAssemblerX86Common::branchSub32):
1635         (JSC::MacroAssemblerX86Common::branchNeg32):
1636         (JSC::MacroAssemblerX86Common::branchOr32):
1637         (JSC::MacroAssemblerX86Common::compare32):
1638         (JSC::MacroAssemblerX86Common::test8):
1639         (JSC::MacroAssemblerX86Common::test32):
1640         (JSC::MacroAssemblerX86Common::x86Condition):
1641         * assembler/MacroAssemblerX86_64.h:
1642         (JSC::MacroAssemblerX86_64::comparePtr):
1643         (JSC::MacroAssemblerX86_64::branchPtr):
1644         (JSC::MacroAssemblerX86_64::branchTestPtr):
1645         (JSC::MacroAssemblerX86_64::branchAddPtr):
1646         (JSC::MacroAssemblerX86_64::branchSubPtr):
1647         (JSC::MacroAssemblerX86_64::branchPtrWithPatch):
1648         (JSC::MacroAssemblerX86_64::branchTest8):
1649         * dfg/DFGSpeculativeJIT.cpp:
1650         (JSC::DFG::SpeculativeJIT::compile):
1651         * jit/JITOpcodes.cpp:
1652         (JSC::JIT::emit_op_eq):
1653         (JSC::JIT::emit_op_neq):
1654         (JSC::JIT::compileOpStrictEq):
1655         (JSC::JIT::emit_op_eq_null):
1656         (JSC::JIT::emit_op_neq_null):
1657         * jit/JITOpcodes32_64.cpp:
1658         (JSC::JIT::emit_op_eq):
1659         (JSC::JIT::emit_op_neq):
1660         (JSC::JIT::compileOpStrictEq):
1661         (JSC::JIT::emit_op_eq_null):
1662         (JSC::JIT::emit_op_neq_null):
1663
1664 2011-04-20  Balazs Kelemen  <kbalazs@webkit.org>
1665
1666         Reviewed by Csaba Osztrogonác.
1667
1668         [Qt] Cleanup includepath adjustment for generated files
1669         https://bugs.webkit.org/show_bug.cgi?id=58869
1670
1671         * JavaScriptCore.pri:  Add the directory of generated files to the include
1672         path with absolute path to make it valid in the final build step.
1673
1674 2011-04-19  Oliver Hunt  <oliver@apple.com>
1675
1676         Reviewed by Gavin Barraclough.
1677
1678         Remove unneeded deprecated methods from MarkStack
1679         https://bugs.webkit.org/show_bug.cgi?id=58853
1680
1681         Remove deprecated methods
1682
1683         * heap/MarkStack.h:
1684
1685 2011-04-19  Mark Rowe  <mrowe@apple.com>
1686
1687         Things work best when the Xcode project refers to the file at a path that exists.
1688
1689         * JavaScriptCore.xcodeproj/project.pbxproj:
1690
1691 2011-04-19  Renata Hodovan  <reni@webkit.org>
1692
1693         Reviewed by Eric Seidel.
1694
1695         Move the alignment related macros in Vector.h to new Alignment.h.
1696         https://bugs.webkit.org/show_bug.cgi?id=56000
1697
1698         * JavaScriptCore.gypi:
1699         * JavaScriptCore.vcproj/WTF/WTF.vcproj:
1700         * JavaScriptCore.xcodeproj/project.pbxproj:
1701         * wtf/Alignment.h: Added.
1702         * wtf/CMakeLists.txt:
1703         * wtf/Vector.h:
1704
1705 2011-04-19  Oliver Hunt  <oliver@apple.com>
1706
1707         Reviewed by Gavin Barraclough.
1708
1709         Remove DeprecatedPtr
1710         https://bugs.webkit.org/show_bug.cgi?id=58718
1711
1712         Remove the class an all functions that still exist to support it.
1713
1714         * heap/MarkStack.h:
1715         (JSC::MarkStack::append):
1716         * runtime/JSValue.h:
1717         * runtime/WriteBarrier.h:
1718
1719 2011-04-19  Jungshik Shin  <jshin@chromium.org>
1720
1721         Reviewed by David Levin
1722
1723         Add U+FEFF (Zero width no-break space) to CharacterNames.h.
1724         It's added to the list of characters to treat as zero-width
1725         in WebCore.
1726
1727         https://bugs.webkit.org/show_bug.cgi?id=48860
1728
1729         * wtf/unicode/CharacterNames.h:
1730
1731 2011-04-19  Csaba Osztrogonác  <ossy@webkit.org>
1732
1733         [Qt] REGRESSION(84176): http/tests/xmlhttprequest/event-listener-gc.html fails
1734         https://bugs.webkit.org/show_bug.cgi?id=58871
1735
1736         Unreviewed, rolling out r84176, r84178, r84186, r84212 and r84231.
1737         http://trac.webkit.org/changeset/84176 (original patch)
1738         http://trac.webkit.org/changeset/84178 (original patch - part 2)
1739         http://trac.webkit.org/changeset/84186 (build fix)
1740         http://trac.webkit.org/changeset/84212
1741         http://trac.webkit.org/changeset/84231 (skip failing test)
1742
1743         original bugs:
1744          - https://bugs.webkit.org/show_bug.cgi?id=58718
1745          - https://bugs.webkit.org/show_bug.cgi?id=58853
1746
1747         * heap/MarkStack.h:
1748         (JSC::MarkStack::deprecatedAppendValues):
1749         (JSC::MarkStack::append):
1750         (JSC::MarkStack::deprecatedAppend):
1751         * runtime/JSValue.h:
1752         * runtime/WriteBarrier.h:
1753         (JSC::DeprecatedPtr::DeprecatedPtr):
1754         (JSC::DeprecatedPtr::get):
1755         (JSC::DeprecatedPtr::operator*):
1756         (JSC::DeprecatedPtr::operator->):
1757         (JSC::DeprecatedPtr::slot):
1758         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
1759         (JSC::DeprecatedPtr::operator!):
1760         (JSC::operator==):
1761
1762 2011-04-18  Oliver Hunt  <oliver@apple.com>
1763
1764         Reviewed by Gavin Barraclough.
1765
1766         Remove unneeded deprecated methods from MarkStack
1767         https://bugs.webkit.org/show_bug.cgi?id=58853
1768
1769         Remove deprecated methods
1770
1771         * heap/MarkStack.h:
1772
1773 2011-04-18  Oliver Hunt  <oliver@apple.com>
1774
1775         Reviewed by Adam Roben.
1776
1777         Off by one initialising repeat callframe
1778         https://bugs.webkit.org/show_bug.cgi?id=58838
1779         <rdar://problem/8756810>
1780
1781         If the end of a callframe made for a repeat call landed on
1782         a page boundary the following page may not have been committed
1783         which means that the off by one could lead to a crash.  However
1784         it could only happen in this case and only on windows which is
1785         why it was so hard to repro.  Alas given the steps needed to
1786         reproduce are such that it's not really possible to make a
1787         testcase.
1788
1789         This fix makes the code a little less squirrely by not trying
1790         to avoid the unnecessary initialisation of |this|.
1791
1792         * interpreter/Interpreter.cpp:
1793         (JSC::Interpreter::prepareForRepeatCall):
1794
1795 2011-04-18  Gavin Barraclough  <barraclough@apple.com>
1796
1797         Reviewed by Geoff Garen.
1798
1799         Bug 58829 - DFG JIT - Optimize add/sub immediate, multiply.
1800
1801         Add code generation for add/subtract instruction with immediate operands
1802         (where a child is a constant), and don't bail to non-speculative if an
1803         integer multiple results in a +0 result (only if it should be generating -0).
1804
1805         * dfg/DFGSpeculativeJIT.cpp:
1806         (JSC::DFG::SpeculativeJIT::compile):
1807         * dfg/DFGSpeculativeJIT.h:
1808         (JSC::DFG::SpeculativeJIT::isDoubleConstantWithInt32Value):
1809
1810 2011-04-18  Gavin Barraclough  <barraclough@apple.com>
1811
1812         Reviewed by Geoff Garen.
1813
1814         Bug 58817 - DFG JIT - if speculative compilation fails, throw away code.
1815
1816         If we detect a logical conflict, throw away generated code,
1817         and only compile through the NonSpeculativeJIT.
1818
1819         * assembler/AbstractMacroAssembler.h:
1820         (JSC::AbstractMacroAssembler::rewindToLabel):
1821         * assembler/AssemblerBuffer.h:
1822         (JSC::AssemblerBuffer::rewindToOffset):
1823         * assembler/MacroAssemblerX86Common.h:
1824         (JSC::MacroAssemblerX86Common::branchAdd32):
1825         (JSC::MacroAssemblerX86Common::branchSub32):
1826         * assembler/X86Assembler.h:
1827         (JSC::X86Assembler::rewindToLabel):
1828         (JSC::X86Assembler::X86InstructionFormatter::rewindToLabel):
1829         * dfg/DFGJITCompiler.cpp:
1830         (JSC::DFG::JITCompiler::linkSpeculationChecks):
1831         (JSC::DFG::JITCompiler::compileFunction):
1832         * dfg/DFGNode.h:
1833         * dfg/DFGNonSpeculativeJIT.cpp:
1834         (JSC::DFG::NonSpeculativeJIT::compile):
1835         * dfg/DFGSpeculativeJIT.cpp:
1836         (JSC::DFG::SpeculativeJIT::compile):
1837         * dfg/DFGSpeculativeJIT.h:
1838         (JSC::DFG::SpeculationCheckIndexIterator::SpeculationCheckIndexIterator):
1839
1840 2011-04-18  Oliver Hunt  <oliver@apple.com>
1841
1842         Reviewed by Gavin Barraclough.
1843
1844         Remove DeprecatedPtr
1845         https://bugs.webkit.org/show_bug.cgi?id=58718
1846
1847         As simple as it sounds.
1848
1849         * runtime/JSValue.h:
1850         * runtime/WriteBarrier.h:
1851
1852 2011-04-17  Cameron Zwarich  <zwarich@apple.com>
1853
1854         Reviewed by Dan Bernstein.
1855
1856         JSC no longer builds with Clang due to -Woverloaded-virtual warning
1857         https://bugs.webkit.org/show_bug.cgi?id=58760
1858
1859         Rename Structure's specificValue overload of put to putSpecificValue to avoid
1860         Clang's warning for overloading a virtual function.
1861
1862         * runtime/Structure.cpp:
1863         (JSC::Structure::addPropertyTransition):
1864         (JSC::Structure::addPropertyWithoutTransition):
1865         (JSC::Structure::putSpecificValue):
1866         * runtime/Structure.h:
1867
1868 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1869
1870         Reviewed by Adam Barth.
1871
1872         Remove WTF_PLATFORM_SGL
1873         https://bugs.webkit.org/show_bug.cgi?id=58743
1874
1875         WTF_PLATFORM_SGL and PLATFORM(SGL) are not used in the code anywhere.
1876
1877         * wtf/Platform.h:
1878
1879 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1880
1881         Reviewed by Adam Barth.
1882
1883         Rename PLATFORM(CA) to USE(CA)
1884         https://bugs.webkit.org/show_bug.cgi?id=58742
1885
1886         * wtf/Platform.h:
1887
1888 2011-04-17  Patrick Gansterer  <paroga@webkit.org>
1889
1890         Reviewed by Adam Barth.
1891
1892         Rename PLATFORM(CG) to USE(CG)
1893         https://bugs.webkit.org/show_bug.cgi?id=58729
1894
1895         * wtf/Platform.h:
1896
1897 2011-04-16  Patrick Gansterer  <paroga@webkit.org>
1898
1899         Reviewed by Eric Seidel.
1900
1901         Rename PLATFORM(CAIRO) to USE(CAIRO)
1902         https://bugs.webkit.org/show_bug.cgi?id=55192
1903
1904         * wtf/Platform.h:
1905         * wtf/gobject/GTypedefs.h:
1906
1907 2011-04-15  Sheriff Bot  <webkit.review.bot@gmail.com>
1908
1909         Unreviewed, rolling out r84067.
1910         http://trac.webkit.org/changeset/84067
1911         https://bugs.webkit.org/show_bug.cgi?id=58724
1912
1913         qt build are failing. (Requested by loislo2 on #webkit).
1914
1915         * heap/MarkStack.h:
1916         (JSC::MarkStack::append):
1917         * runtime/JSValue.h:
1918         * runtime/WriteBarrier.h:
1919         (JSC::DeprecatedPtr::DeprecatedPtr):
1920         (JSC::DeprecatedPtr::get):
1921         (JSC::DeprecatedPtr::operator*):
1922         (JSC::DeprecatedPtr::operator->):
1923         (JSC::DeprecatedPtr::slot):
1924         (JSC::DeprecatedPtr::operator UnspecifiedBoolType*):
1925         (JSC::DeprecatedPtr::operator!):
1926         (JSC::operator==):
1927
1928 2011-04-15  Shishir Agrawal  <shishir@chromium.org>
1929
1930         Reviewed by James Robinson.
1931
1932         Add a flag to guard Page Visibility API changes.
1933         https://bugs.webkit.org/show_bug.cgi?id=58464
1934
1935         * Configurations/FeatureDefines.xcconfig:
1936
1937 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1938
1939         Errrk! - build fix from !x86-64.
1940
1941         * dfg/DFGNode.h:
1942
1943 2011-04-15  David Levin  <levin@chromium.org>
1944
1945         Revert of r83974.
1946
1947         JavaScriptCore shouldn't depend on ../ThirdParty/gtest/xcode/gtest.xcodeproj
1948         https://bugs.webkit.org/show_bug.cgi?id=58716
1949
1950         * JavaScriptCore.xcodeproj/project.pbxproj:
1951         * wtf/tests/RunAllWtfTests.cpp: Removed.
1952         * wtf/tests/StringTests.cpp: Removed.
1953
1954 2011-04-15  Oliver Hunt  <oliver@apple.com>
1955
1956         Reviewed by Gavin Barraclough.
1957
1958         Remove DeprecatedPtr
1959         https://bugs.webkit.org/show_bug.cgi?id=58718
1960
1961         As simple as it sounds.
1962
1963         * heap/MarkStack.h:
1964         (JSC::MarkStack::append):
1965         * runtime/JSValue.h:
1966         * runtime/WriteBarrier.h:
1967
1968 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
1969
1970         Reviewed by Oliver Hunt.
1971
1972         Add a simple tool to gather statistics on whether functions
1973         are completed through the new or old JIT.
1974
1975         * dfg/DFGNode.h:
1976         * dfg/DFGNonSpeculativeJIT.cpp:
1977         (JSC::DFG::NonSpeculativeJIT::compile):
1978         * dfg/DFGSpeculativeJIT.cpp:
1979         (JSC::DFG::SpeculativeJIT::compile):
1980         * jit/JIT.cpp:
1981         (JSC::JIT::privateCompile):
1982
1983 2011-04-15  Oliver Hunt  <oliver@apple.com>
1984
1985         GC allocate Structure
1986         https://bugs.webkit.org/show_bug.cgi?id=58483
1987
1988         Rolling r83894 r83827 r83810 r83809 r83808 back in with
1989         a workaround for the gcc bug seen by the gtk bots
1990
1991         * API/JSCallbackConstructor.cpp:
1992         (JSC::JSCallbackConstructor::JSCallbackConstructor):
1993         * API/JSCallbackConstructor.h:
1994         (JSC::JSCallbackConstructor::createStructure):
1995         * API/JSCallbackFunction.h:
1996         (JSC::JSCallbackFunction::createStructure):
1997         * API/JSCallbackObject.h:
1998         (JSC::JSCallbackObject::createStructure):
1999         * API/JSCallbackObjectFunctions.h:
2000         (JSC::::JSCallbackObject):
2001         * API/JSContextRef.cpp:
2002         * JavaScriptCore.JSVALUE32_64only.exp:
2003         * JavaScriptCore.JSVALUE64only.exp:
2004         * JavaScriptCore.exp:
2005         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
2006         * bytecode/CodeBlock.cpp:
2007         (JSC::CodeBlock::~CodeBlock):
2008         (JSC::CodeBlock::markStructures):
2009         (JSC::CodeBlock::markAggregate):
2010         * bytecode/CodeBlock.h:
2011         (JSC::MethodCallLinkInfo::setSeen):
2012         (JSC::GlobalResolveInfo::GlobalResolveInfo):
2013         * bytecode/Instruction.h:
2014         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
2015         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
2016         (JSC::PolymorphicAccessStructureList::markAggregate):
2017         (JSC::Instruction::Instruction):
2018         * bytecode/StructureStubInfo.cpp:
2019         (JSC::StructureStubInfo::deref):
2020         (JSC::StructureStubInfo::markAggregate):
2021         * bytecode/StructureStubInfo.h:
2022         (JSC::StructureStubInfo::initGetByIdSelf):
2023         (JSC::StructureStubInfo::initGetByIdProto):
2024         (JSC::StructureStubInfo::initGetByIdChain):
2025         (JSC::StructureStubInfo::initPutByIdTransition):
2026         (JSC::StructureStubInfo::initPutByIdReplace):
2027         * debugger/DebuggerActivation.cpp:
2028         (JSC::DebuggerActivation::DebuggerActivation):
2029         * debugger/DebuggerActivation.h:
2030         (JSC::DebuggerActivation::createStructure):
2031         * heap/Handle.h:
2032         * heap/MarkStack.cpp:
2033         (JSC::MarkStack::markChildren):
2034         (JSC::MarkStack::drain):
2035         * heap/MarkedBlock.cpp:
2036         (JSC::MarkedBlock::MarkedBlock):
2037         (JSC::MarkedBlock::sweep):
2038         * heap/Strong.h:
2039         (JSC::Strong::Strong):
2040         (JSC::Strong::set):
2041         * interpreter/Interpreter.cpp:
2042         (JSC::Interpreter::resolveGlobal):
2043         (JSC::Interpreter::resolveGlobalDynamic):
2044         (JSC::Interpreter::tryCachePutByID):
2045         (JSC::Interpreter::uncachePutByID):
2046         (JSC::Interpreter::tryCacheGetByID):
2047         (JSC::Interpreter::uncacheGetByID):
2048         (JSC::Interpreter::privateExecute):
2049         * jit/JIT.h:
2050         * jit/JITPropertyAccess.cpp:
2051         (JSC::JIT::privateCompilePutByIdTransition):
2052         (JSC::JIT::patchMethodCallProto):
2053         (JSC::JIT::privateCompileGetByIdProto):
2054         (JSC::JIT::privateCompileGetByIdSelfList):
2055         (JSC::JIT::privateCompileGetByIdProtoList):
2056         (JSC::JIT::privateCompileGetByIdChainList):
2057         (JSC::JIT::privateCompileGetByIdChain):
2058         * jit/JITPropertyAccess32_64.cpp:
2059         (JSC::JIT::privateCompilePutByIdTransition):
2060         (JSC::JIT::patchMethodCallProto):
2061         (JSC::JIT::privateCompileGetByIdProto):
2062         (JSC::JIT::privateCompileGetByIdSelfList):
2063         (JSC::JIT::privateCompileGetByIdProtoList):
2064         (JSC::JIT::privateCompileGetByIdChainList):
2065         (JSC::JIT::privateCompileGetByIdChain):
2066         * jit/JITStubs.cpp:
2067         (JSC::JITThunks::tryCachePutByID):
2068         (JSC::JITThunks::tryCacheGetByID):
2069         (JSC::DEFINE_STUB_FUNCTION):
2070         (JSC::getPolymorphicAccessStructureListSlot):
2071         * jit/JSInterfaceJIT.h:
2072         (JSC::JSInterfaceJIT::storePtrWithWriteBarrier):
2073         * jsc.cpp:
2074         (cleanupGlobalData):
2075         * runtime/Arguments.h:
2076         (JSC::Arguments::createStructure):
2077         (JSC::Arguments::Arguments):
2078         (JSC::JSActivation::copyRegisters):
2079         * runtime/ArrayConstructor.cpp:
2080         (JSC::ArrayConstructor::ArrayConstructor):
2081         (JSC::constructArrayWithSizeQuirk):
2082         * runtime/ArrayConstructor.h:
2083         * runtime/ArrayPrototype.cpp:
2084         (JSC::ArrayPrototype::ArrayPrototype):
2085         (JSC::arrayProtoFuncSplice):
2086         * runtime/ArrayPrototype.h:
2087         (JSC::ArrayPrototype::createStructure):
2088         * runtime/BatchedTransitionOptimizer.h:
2089         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2090         * runtime/BooleanConstructor.cpp:
2091         (JSC::BooleanConstructor::BooleanConstructor):
2092         * runtime/BooleanConstructor.h:
2093         * runtime/BooleanObject.cpp:
2094         (JSC::BooleanObject::BooleanObject):
2095         * runtime/BooleanObject.h:
2096         (JSC::BooleanObject::createStructure):
2097         * runtime/BooleanPrototype.cpp:
2098         (JSC::BooleanPrototype::BooleanPrototype):
2099         * runtime/BooleanPrototype.h:
2100         * runtime/DateConstructor.cpp:
2101         (JSC::DateConstructor::DateConstructor):
2102         * runtime/DateConstructor.h:
2103         * runtime/DateInstance.cpp:
2104         (JSC::DateInstance::DateInstance):
2105         * runtime/DateInstance.h:
2106         (JSC::DateInstance::createStructure):
2107         * runtime/DatePrototype.cpp:
2108         (JSC::DatePrototype::DatePrototype):
2109         * runtime/DatePrototype.h:
2110         (JSC::DatePrototype::createStructure):
2111         * runtime/Error.cpp:
2112         (JSC::StrictModeTypeErrorFunction::StrictModeTypeErrorFunction):
2113         * runtime/ErrorConstructor.cpp:
2114         (JSC::ErrorConstructor::ErrorConstructor):
2115         * runtime/ErrorConstructor.h:
2116         * runtime/ErrorInstance.cpp:
2117         (JSC::ErrorInstance::ErrorInstance):
2118         (JSC::ErrorInstance::create):
2119         * runtime/ErrorInstance.h:
2120         (JSC::ErrorInstance::createStructure):
2121         * runtime/ErrorPrototype.cpp:
2122         (JSC::ErrorPrototype::ErrorPrototype):
2123         * runtime/ErrorPrototype.h:
2124         * runtime/ExceptionHelpers.cpp:
2125         (JSC::InterruptedExecutionError::InterruptedExecutionError):
2126         (JSC::TerminatedExecutionError::TerminatedExecutionError):
2127         * runtime/Executable.cpp:
2128         * runtime/Executable.h:
2129         (JSC::ExecutableBase::ExecutableBase):
2130         (JSC::ExecutableBase::createStructure):
2131         (JSC::NativeExecutable::createStructure):
2132         (JSC::NativeExecutable::NativeExecutable):
2133         (JSC::ScriptExecutable::ScriptExecutable):
2134         (JSC::EvalExecutable::createStructure):
2135         (JSC::ProgramExecutable::createStructure):
2136         (JSC::FunctionExecutable::createStructure):
2137         * runtime/FunctionConstructor.cpp:
2138         (JSC::FunctionConstructor::FunctionConstructor):
2139         * runtime/FunctionConstructor.h:
2140         * runtime/FunctionPrototype.cpp:
2141         (JSC::FunctionPrototype::FunctionPrototype):
2142         * runtime/FunctionPrototype.h:
2143         (JSC::FunctionPrototype::createStructure):
2144         * runtime/GetterSetter.h:
2145         (JSC::GetterSetter::GetterSetter):
2146         (JSC::GetterSetter::createStructure):
2147         * runtime/InitializeThreading.cpp:
2148         (JSC::initializeThreadingOnce):
2149         * runtime/InternalFunction.cpp:
2150         (JSC::InternalFunction::InternalFunction):
2151         * runtime/InternalFunction.h:
2152         (JSC::InternalFunction::createStructure):
2153         * runtime/JSAPIValueWrapper.h:
2154         (JSC::JSAPIValueWrapper::createStructure):
2155         (JSC::JSAPIValueWrapper::JSAPIValueWrapper):
2156         * runtime/JSActivation.cpp:
2157         (JSC::JSActivation::JSActivation):
2158         * runtime/JSActivation.h:
2159         (JSC::JSActivation::createStructure):
2160         * runtime/JSArray.cpp:
2161         (JSC::JSArray::JSArray):
2162         * runtime/JSArray.h:
2163         (JSC::JSArray::createStructure):
2164         * runtime/JSByteArray.cpp:
2165         (JSC::JSByteArray::JSByteArray):
2166         (JSC::JSByteArray::createStructure):
2167         * runtime/JSByteArray.h:
2168         (JSC::JSByteArray::JSByteArray):
2169         * runtime/JSCell.cpp:
2170         (JSC::isZombie):
2171         * runtime/JSCell.h:
2172         (JSC::JSCell::JSCell::JSCell):
2173         (JSC::JSCell::JSCell::addressOfStructure):
2174         (JSC::JSCell::JSCell::structure):
2175         (JSC::JSCell::JSCell::markChildren):
2176         (JSC::JSCell::JSValue::isZombie):
2177         * runtime/JSFunction.cpp:
2178         (JSC::JSFunction::JSFunction):
2179         * runtime/JSFunction.h:
2180         (JSC::JSFunction::createStructure):
2181         * runtime/JSGlobalData.cpp:
2182         (JSC::JSGlobalData::storeVPtrs):
2183         (JSC::JSGlobalData::JSGlobalData):
2184         (JSC::JSGlobalData::clearBuiltinStructures):
2185         (JSC::JSGlobalData::createLeaked):
2186         * runtime/JSGlobalData.h:
2187         (JSC::allocateGlobalHandle):
2188         * runtime/JSGlobalObject.cpp:
2189         (JSC::JSGlobalObject::reset):
2190         (JSC::JSGlobalObject::markChildren):
2191         (JSC::JSGlobalObject::copyGlobalsFrom):
2192         * runtime/JSGlobalObject.h:
2193         (JSC::JSGlobalObject::JSGlobalObject):
2194         (JSC::JSGlobalObject::createStructure):
2195         (JSC::Structure::prototypeChain):
2196         (JSC::Structure::isValid):
2197         (JSC::constructEmptyArray):
2198         * runtime/JSNotAnObject.h:
2199         (JSC::JSNotAnObject::JSNotAnObject):
2200         (JSC::JSNotAnObject::createStructure):
2201         * runtime/JSONObject.cpp:
2202         (JSC::JSONObject::JSONObject):
2203         * runtime/JSONObject.h:
2204         (JSC::JSONObject::createStructure):
2205         * runtime/JSObject.cpp:
2206         (JSC::JSObject::defineGetter):
2207         (JSC::JSObject::defineSetter):
2208         (JSC::JSObject::seal):
2209         (JSC::JSObject::freeze):
2210         (JSC::JSObject::preventExtensions):
2211         (JSC::JSObject::removeDirect):
2212         (JSC::JSObject::createInheritorID):
2213         * runtime/JSObject.h:
2214         (JSC::JSObject::createStructure):
2215         (JSC::JSObject::JSObject):
2216         (JSC::JSNonFinalObject::createStructure):
2217         (JSC::JSNonFinalObject::JSNonFinalObject):
2218         (JSC::JSFinalObject::create):
2219         (JSC::JSFinalObject::createStructure):
2220         (JSC::JSFinalObject::JSFinalObject):
2221         (JSC::constructEmptyObject):
2222         (JSC::createEmptyObjectStructure):
2223         (JSC::JSObject::~JSObject):
2224         (JSC::JSObject::setPrototype):
2225         (JSC::JSObject::setStructure):
2226         (JSC::JSObject::inheritorID):
2227         (JSC::JSObject::putDirectInternal):
2228         (JSC::JSObject::transitionTo):
2229         (JSC::JSObject::markChildrenDirect):
2230         * runtime/JSObjectWithGlobalObject.cpp:
2231         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
2232         * runtime/JSObjectWithGlobalObject.h:
2233         (JSC::JSObjectWithGlobalObject::createStructure):
2234         (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject):
2235         * runtime/JSPropertyNameIterator.cpp:
2236         (JSC::JSPropertyNameIterator::JSPropertyNameIterator):
2237         (JSC::JSPropertyNameIterator::create):
2238         (JSC::JSPropertyNameIterator::get):
2239         * runtime/JSPropertyNameIterator.h:
2240         (JSC::JSPropertyNameIterator::createStructure):
2241         (JSC::JSPropertyNameIterator::setCachedStructure):
2242         (JSC::Structure::setEnumerationCache):
2243         * runtime/JSStaticScopeObject.h:
2244         (JSC::JSStaticScopeObject::JSStaticScopeObject):
2245         (JSC::JSStaticScopeObject::createStructure):
2246         * runtime/JSString.h:
2247         (JSC::RopeBuilder::JSString):
2248         (JSC::RopeBuilder::createStructure):
2249         * runtime/JSType.h:
2250         * runtime/JSTypeInfo.h:
2251         (JSC::TypeInfo::TypeInfo):
2252         * runtime/JSValue.h:
2253         * runtime/JSVariableObject.h:
2254         (JSC::JSVariableObject::createStructure):
2255         (JSC::JSVariableObject::JSVariableObject):
2256         (JSC::JSVariableObject::copyRegisterArray):
2257         * runtime/JSWrapperObject.h:
2258         (JSC::JSWrapperObject::createStructure):
2259         (JSC::JSWrapperObject::JSWrapperObject):
2260         * runtime/JSZombie.cpp:
2261         * runtime/JSZombie.h:
2262         (JSC::JSZombie::JSZombie):
2263         (JSC::JSZombie::createStructure):
2264         * runtime/MathObject.cpp:
2265         (JSC::MathObject::MathObject):
2266         * runtime/MathObject.h:
2267         (JSC::MathObject::createStructure):
2268         * runtime/NativeErrorConstructor.cpp:
2269         (JSC::NativeErrorConstructor::NativeErrorConstructor):
2270         (JSC::NativeErrorConstructor::markChildren):
2271         (JSC::constructWithNativeErrorConstructor):
2272         * runtime/NativeErrorConstructor.h:
2273         (JSC::NativeErrorConstructor::createStructure):
2274         * runtime/NativeErrorPrototype.cpp:
2275         (JSC::NativeErrorPrototype::NativeErrorPrototype):
2276         * runtime/NativeErrorPrototype.h:
2277         * runtime/NumberConstructor.cpp:
2278         (JSC::NumberConstructor::NumberConstructor):
2279         * runtime/NumberConstructor.h:
2280         (JSC::NumberConstructor::createStructure):
2281         * runtime/NumberObject.cpp:
2282         (JSC::NumberObject::NumberObject):
2283         * runtime/NumberObject.h:
2284         (JSC::NumberObject::createStructure):
2285         * runtime/NumberPrototype.cpp:
2286         (JSC::NumberPrototype::NumberPrototype):
2287         * runtime/NumberPrototype.h:
2288         * runtime/ObjectConstructor.cpp:
2289         (JSC::ObjectConstructor::ObjectConstructor):
2290         * runtime/ObjectConstructor.h:
2291         (JSC::ObjectConstructor::createStructure):
2292         * runtime/ObjectPrototype.cpp:
2293         (JSC::ObjectPrototype::ObjectPrototype):
2294         * runtime/ObjectPrototype.h:
2295         * runtime/PropertyMapHashTable.h:
2296         (JSC::PropertyTable::PropertyTable):
2297         * runtime/RegExpConstructor.cpp:
2298         (JSC::RegExpConstructor::RegExpConstructor):
2299         (JSC::RegExpMatchesArray::RegExpMatchesArray):
2300         * runtime/RegExpConstructor.h:
2301         (JSC::RegExpConstructor::createStructure):
2302         * runtime/RegExpObject.cpp:
2303         (JSC::RegExpObject::RegExpObject):
2304         * runtime/RegExpObject.h:
2305         (JSC::RegExpObject::createStructure):
2306         * runtime/RegExpPrototype.cpp:
2307         (JSC::RegExpPrototype::RegExpPrototype):
2308         * runtime/RegExpPrototype.h:
2309         * runtime/ScopeChain.h:
2310         (JSC::ScopeChainNode::ScopeChainNode):
2311         (JSC::ScopeChainNode::createStructure):
2312         * runtime/StrictEvalActivation.cpp:
2313         (JSC::StrictEvalActivation::StrictEvalActivation):
2314         * runtime/StringConstructor.cpp:
2315         (JSC::StringConstructor::StringConstructor):
2316         * runtime/StringConstructor.h:
2317         * runtime/StringObject.cpp:
2318         (JSC::StringObject::StringObject):
2319         * runtime/StringObject.h:
2320         (JSC::StringObject::createStructure):
2321         * runtime/StringObjectThatMasqueradesAsUndefined.h:
2322         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
2323         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
2324         * runtime/StringPrototype.cpp:
2325         (JSC::StringPrototype::StringPrototype):
2326         * runtime/StringPrototype.h:
2327         (JSC::StringPrototype::createStructure):
2328         * runtime/Structure.cpp:
2329         (JSC::StructureTransitionTable::remove):
2330         (JSC::StructureTransitionTable::add):
2331         (JSC::Structure::Structure):
2332         (JSC::Structure::~Structure):
2333         (JSC::Structure::materializePropertyMap):
2334         (JSC::Structure::addPropertyTransitionToExistingStructure):
2335         (JSC::Structure::addPropertyTransition):
2336         (JSC::Structure::removePropertyTransition):
2337         (JSC::Structure::changePrototypeTransition):
2338         (JSC::Structure::despecifyFunctionTransition):
2339         (JSC::Structure::getterSetterTransition):
2340         (JSC::Structure::toDictionaryTransition):
2341         (JSC::Structure::toCacheableDictionaryTransition):
2342         (JSC::Structure::toUncacheableDictionaryTransition):
2343         (JSC::Structure::sealTransition):
2344         (JSC::Structure::freezeTransition):
2345         (JSC::Structure::preventExtensionsTransition):
2346         (JSC::Structure::flattenDictionaryStructure):
2347         (JSC::Structure::copyPropertyTable):
2348         (JSC::Structure::put):
2349         (JSC::Structure::markChildren):
2350         * runtime/Structure.h:
2351         (JSC::Structure::create):
2352         (JSC::Structure::setPrototypeWithoutTransition):
2353         (JSC::Structure::createStructure):
2354         (JSC::JSCell::createDummyStructure):
2355         (JSC::StructureTransitionTable::keyForWeakGCMapFinalizer):
2356         * runtime/StructureChain.cpp:
2357         (JSC::StructureChain::StructureChain):
2358         (JSC::StructureChain::markChildren):
2359         * runtime/StructureChain.h:
2360         (JSC::StructureChain::create):
2361         (JSC::StructureChain::head):
2362         (JSC::StructureChain::createStructure):
2363         * runtime/StructureTransitionTable.h:
2364         (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::finalizerContextFor):
2365         (JSC::StructureTransitionTable::WeakGCMapFinalizerCallback::keyForFinalizer):
2366         (JSC::StructureTransitionTable::~StructureTransitionTable):
2367         (JSC::StructureTransitionTable::slot):
2368         (JSC::StructureTransitionTable::setMap):
2369         (JSC::StructureTransitionTable::singleTransition):
2370         (JSC::StructureTransitionTable::clearSingleTransition):
2371         (JSC::StructureTransitionTable::setSingleTransition):
2372         * runtime/WeakGCMap.h:
2373         (JSC::DefaultWeakGCMapFinalizerCallback::finalizerContextFor):
2374         (JSC::DefaultWeakGCMapFinalizerCallback::keyForFinalizer):
2375         (JSC::WeakGCMap::contains):
2376         (JSC::WeakGCMap::find):
2377         (JSC::WeakGCMap::remove):
2378         (JSC::WeakGCMap::add):
2379         (JSC::WeakGCMap::set):
2380         (JSC::WeakGCMap::finalize):
2381         * runtime/WriteBarrier.h:
2382         (JSC::writeBarrier):
2383         (JSC::WriteBarrierBase::set):
2384         (JSC::WriteBarrierBase::operator*):
2385         (JSC::WriteBarrierBase::operator->):
2386         (JSC::WriteBarrierBase::setWithoutWriteBarrier):
2387
2388 2011-04-15  Fridrich Strba  <fridrich.strba@bluewin.ch>
2389
2390         Reviewed by Gavin Barraclough.
2391
2392         Correctly prefix symbols. Since gcc 4.5.0, Windows x64 symbols
2393         are not prefixed by underscore anymore. This is consistent with
2394         what MSVC does.
2395         https://bugs.webkit.org/show_bug.cgi?id=58573
2396
2397         * jit/JITStubs.cpp:
2398
2399 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
2400
2401         Reviewed by Geoff Garen.
2402
2403         Bug 58705 - DFG JIT Add support for flow control (branch, jump).
2404
2405         Add support for control flow by breaking the CodeBlock up into multiple
2406         basic blocks, generating code for each basic block in turn through the
2407         speculative JIT & then the non-speculative JIT.
2408
2409         * dfg/DFGByteCodeParser.cpp:
2410         (JSC::DFG::ByteCodeParser::setTemporary):
2411         (JSC::DFG::ByteCodeParser::addToGraph):
2412         (JSC::DFG::ByteCodeParser::parseBlock):
2413         (JSC::DFG::ByteCodeParser::parse):
2414         * dfg/DFGGraph.cpp:
2415         (JSC::DFG::Graph::dump):
2416         * dfg/DFGGraph.h:
2417         (JSC::DFG::BasicBlock::BasicBlock):
2418         (JSC::DFG::BasicBlock::getBytecodeOffset):
2419         (JSC::DFG::Graph::blockIndexForBytecodeOffset):
2420         * dfg/DFGJITCodeGenerator.h:
2421         (JSC::DFG::JITCodeGenerator::JITCodeGenerator):
2422         (JSC::DFG::JITCodeGenerator::addBranch):
2423         (JSC::DFG::JITCodeGenerator::linkBranches):
2424         (JSC::DFG::JITCodeGenerator::BranchRecord::BranchRecord):
2425         * dfg/DFGNode.h:
2426         (JSC::DFG::Node::Node):
2427         (JSC::DFG::Node::isJump):
2428         (JSC::DFG::Node::isBranch):
2429         (JSC::DFG::Node::takenBytecodeOffset):
2430         (JSC::DFG::Node::notTakenBytecodeOffset):
2431         * dfg/DFGNonSpeculativeJIT.cpp:
2432         (JSC::DFG::NonSpeculativeJIT::compile):
2433         * dfg/DFGNonSpeculativeJIT.h:
2434         * dfg/DFGSpeculativeJIT.cpp:
2435         (JSC::DFG::SpeculativeJIT::compile):
2436         * dfg/DFGSpeculativeJIT.h:
2437
2438 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
2439
2440         Reviewed by Geoff Garen.
2441
2442         Bug 58701 - DFG JIT - add GetLocal/SetLocal nodes
2443
2444         Use these for both access to arguments & local variables, adds ability
2445         to set locals, such that values will persist between basic blocks.
2446
2447         * dfg/DFGByteCodeParser.cpp:
2448         (JSC::DFG::ByteCodeParser::ByteCodeParser):
2449         (JSC::DFG::ByteCodeParser::get):
2450         (JSC::DFG::ByteCodeParser::set):
2451         (JSC::DFG::ByteCodeParser::getVariable):
2452         (JSC::DFG::ByteCodeParser::setVariable):
2453         (JSC::DFG::ByteCodeParser::getArgument):
2454         (JSC::DFG::ByteCodeParser::setArgument):
2455         (JSC::DFG::ByteCodeParser::getThis):
2456         (JSC::DFG::ByteCodeParser::setThis):
2457         (JSC::DFG::ByteCodeParser::VariableRecord::VariableRecord):
2458         (JSC::DFG::ByteCodeParser::parseBlock):
2459         * dfg/DFGGraph.cpp:
2460         (JSC::DFG::Graph::dump):
2461         (JSC::DFG::Graph::derefChildren):
2462         * dfg/DFGGraph.h:
2463         (JSC::DFG::Graph::ref):
2464         (JSC::DFG::Graph::deref):
2465         * dfg/DFGNode.h:
2466         (JSC::DFG::Node::hasLocal):
2467         (JSC::DFG::Node::local):
2468         * dfg/DFGNonSpeculativeJIT.cpp:
2469         (JSC::DFG::NonSpeculativeJIT::compile):
2470         * dfg/DFGSpeculativeJIT.cpp:
2471         (JSC::DFG::SpeculativeJIT::compile):
2472
2473 2011-04-15  Gavin Barraclough  <barraclough@apple.com>
2474
2475         Reviewed by Sam Weinig.
2476
2477         Bug 58696 - DFG JIT split handling of vars/temporaries
2478
2479         Presently all callee registers are treated as having single block scope,
2480         since the DFG JIT can only compile single block functions. In order to
2481         expand the JIT to support control flow we will need to change to retaining
2482         locals (but not temporaries) across basic block boundaries.
2483
2484         * dfg/DFGByteCodeParser.cpp:
2485         (JSC::DFG::ByteCodeParser::ByteCodeParser):
2486         (JSC::DFG::ByteCodeParser::get):
2487         (JSC::DFG::ByteCodeParser::set):
2488         (JSC::DFG::ByteCodeParser::getVariable):
2489         (JSC::DFG::ByteCodeParser::setVariable):
2490         (JSC::DFG::ByteCodeParser::getTemporary):
2491         (JSC::DFG::ByteCodeParser::setTemporary):
2492         (JSC::DFG::ByteCodeParser::getArgument):
2493         (JSC::DFG::ByteCodeParser::getInt32Constant):
2494         (JSC::DFG::ByteCodeParser::getDoubleConstant):
2495         (JSC::DFG::ByteCodeParser::getJSConstant):
2496         (JSC::DFG::ByteCodeParser::constantUndefined):
2497         (JSC::DFG::ByteCodeParser::constantNull):
2498         (JSC::DFG::ByteCodeParser::one):
2499         (JSC::DFG::ByteCodeParser::parseBlock):
2500         (JSC::DFG::ByteCodeParser::parse):
2501         (JSC::DFG::parse):
2502         * dfg/DFGNode.h:
2503         * dfg/DFGScoreBoard.h:
2504         (JSC::DFG::ScoreBoard::ScoreBoard):
2505         (JSC::DFG::ScoreBoard::~ScoreBoard):
2506         (JSC::DFG::ScoreBoard::allocate):
2507         (JSC::DFG::ScoreBoard::use):
2508
2509 2011-04-15  Michael Saboff  <msaboff@apple.com>
2510
2511         Reviewed by Oliver Hunt.
2512
2513         globalObject moved to JSObjectWithGlobalObject.cpp inhibits inlining
2514         https://bugs.webkit.org/show_bug.cgi?id=58677
2515
2516         Moved JSObjectWithGlobalObject::globalObject() to 
2517         runtime/JSObjectWithGlobalObject.h to allow the compiler to inline
2518         it for a performance benefit.  An equivalent instance had been in
2519         a header file before r60057.
2520
2521         * JavaScriptCore.exp:
2522         * runtime/JSObjectWithGlobalObject.cpp:
2523         * runtime/JSObjectWithGlobalObject.h:
2524         (JSC::JSObjectWithGlobalObject::globalObject):
2525
2526 2011-04-14  Oliver Hunt  <oliver@apple.com>
2527
2528         Reviewed by Geoffrey Garen.
2529
2530         Make JSNodeFilterCondition handle its lifetime correctly
2531         https://bugs.webkit.org/show_bug.cgi?id=58622
2532
2533         Add export
2534
2535         * JavaScriptCore.exp:
2536
2537 2011-04-14  Alexey Proskuryakov  <ap@apple.com>
2538
2539         Reviewed by Dan Bernstein.
2540
2541         WebKit2: Password field input does not switch to ASCII-compatible source
2542         https://bugs.webkit.org/show_bug.cgi?id=58583
2543         <rdar://problem/9059651>
2544
2545         * wtf/Platform.h: Removed WTF_USE_CARBON_SECURE_INPUT_MODE. It's now only used by Chromium,
2546         and shouldn't be enabled on any other platforms, so there is no reason to make it
2547         configurable via Platform.h.
2548
2549 2011-04-15  Dmitry Lomov  <dslomov@google.com>
2550
2551         Reviewed by David Levin.
2552
2553         Add a sample test case for GTest framework
2554         https://bugs.webkit.org/show_bug.cgi?id=58509
2555
2556         Add an example of GTest testcase, complete with a runner, to JavaScriptCore.
2557
2558         * JavaScriptCore.xcodeproj/project.pbxproj:
2559         * wtf/tests/RunAllWtfTests.cpp: Added.
2560         (main):
2561         * wtf/tests/StringTests.cpp: Added.
2562
2563 2011-04-15  Anna Cavender  <annacc@chromium.org>
2564
2565         Reviewed by Eric Carlson.
2566
2567         Renaming TRACK feature define to VIDEO_TRACK
2568         https://bugs.webkit.org/show_bug.cgi?id=53556
2569
2570         * Configurations/FeatureDefines.xcconfig:
2571
2572 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2573
2574         Rubber stamped by Geoffrey Garen.
2575
2576         Hide DFG_JIT_RESTRICTIONS behind ARITHMETIC_OP() macro, and rename
2577         m_regressionGuard to m_parseFailed, such that it can be reused for
2578         other failure cases.
2579
2580         * dfg/DFGByteCodeParser.cpp:
2581         (JSC::DFG::ByteCodeParser::ByteCodeParser):
2582         (JSC::DFG::ByteCodeParser::parse):
2583
2584 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2585
2586         Reviewed by Geoffrey Garen.
2587
2588         Bug 58620 - DFG JIT - loading of arguments should not be lazy
2589
2590         This optimization is overly simplistic. It only works because we never
2591         write out definitions to arguments (since we currently only compile
2592         single block functions). Revert this for now, we may want to reintroduce
2593         something like this again in the future, but it will need to be aware
2594         how to schedule definitions to arguments versus lazy loads that have not
2595         yet been performed.
2596
2597         * dfg/DFGGenerationInfo.h:
2598         (JSC::DFG::GenerationInfo::needsSpill):
2599         * dfg/DFGGraph.cpp:
2600         (JSC::DFG::Graph::dump):
2601         * dfg/DFGGraph.h:
2602         * dfg/DFGJITCodeGenerator.cpp:
2603         (JSC::DFG::JITCodeGenerator::fillInteger):
2604         (JSC::DFG::JITCodeGenerator::fillDouble):
2605         (JSC::DFG::JITCodeGenerator::fillJSValue):
2606         * dfg/DFGJITCodeGenerator.h:
2607         (JSC::DFG::JITCodeGenerator::initConstantInfo):
2608         * dfg/DFGJITCompiler.cpp:
2609         (JSC::DFG::JITCompiler::fillNumericToDouble):
2610         (JSC::DFG::JITCompiler::fillInt32ToInteger):
2611         (JSC::DFG::JITCompiler::fillToJS):
2612         * dfg/DFGNonSpeculativeJIT.cpp:
2613         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
2614         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
2615         (JSC::DFG::NonSpeculativeJIT::compile):
2616         * dfg/DFGSpeculativeJIT.cpp:
2617         (JSC::DFG::SpeculativeJIT::fillSpeculateIntInternal):
2618         (JSC::DFG::SpeculativeJIT::fillSpeculateCell):
2619         (JSC::DFG::SpeculativeJIT::compile):
2620
2621 2011-04-14  Gavin Barraclough  <barraclough@apple.com>
2622
2623         Reviewed by Geoffrey Garen.
2624
2625         Bug 58600 - DFG JIT bugs in ValueToInt, PutByVal
2626
2627         The bug in PutByVal is that an operand is in JSValueOperand - when this
2628         locks an integer into a register it will always retag the value without
2629         checking if the register is already locked. This is a problem where the
2630         value being stored by a PutByVal is the same as the subscript.
2631         The subscript is locked into a register first, as a strict integer.
2632         Locking the value results in the subscript being modified.
2633
2634         The bug in ValueToInt related to the function of sillentFillAllRegisters.
2635         The problem is that this method will restore all register values from
2636         prior to the call, overwriting the result of the call out. Allow a
2637         register to be passed to specifically be excluded from being preserved.
2638
2639         * assembler/ARMAssembler.h:
2640         (JSC::ARMAssembler::debugOffset):
2641         * assembler/ARMv7Assembler.h:
2642         (JSC::ARMv7Assembler::ARMInstructionFormatter::debugOffset):
2643         * assembler/AbstractMacroAssembler.h:
2644         (JSC::AbstractMacroAssembler::debugOffset):
2645         * assembler/AssemblerBuffer.h:
2646         (JSC::AssemblerBuffer::debugOffset):
2647         * assembler/LinkBuffer.h:
2648         (JSC::LinkBuffer::debugAddress):
2649         * assembler/MIPSAssembler.h:
2650         (JSC::MIPSAssembler::debugOffset):
2651         * assembler/MacroAssemblerX86_64.h:
2652         (JSC::MacroAssemblerX86_64::orPtr):
2653         * assembler/X86Assembler.h:
2654         (JSC::X86Assembler::debugOffset):
2655         (JSC::X86Assembler::X86InstructionFormatter::debugOffset):
2656         * dfg/DFGByteCodeParser.cpp:
2657         (JSC::DFG::ByteCodeParser::parse):
2658         * dfg/DFGGenerationInfo.h:
2659         * dfg/DFGJITCodeGenerator.cpp:
2660         (JSC::DFG::JITCodeGenerator::fillJSValue):
2661         * dfg/DFGJITCodeGenerator.h:
2662         (JSC::DFG::JITCodeGenerator::isConstant):
2663         * dfg/DFGJITCompiler.cpp:
2664         (JSC::DFG::JITCompiler::compileFunction):
2665         * dfg/DFGJITCompiler.h:
2666         (JSC::DFG::JITCompiler::isConstant):
2667         * dfg/DFGNonSpeculativeJIT.cpp:
2668         (JSC::DFG::NonSpeculativeJIT::valueToNumber):
2669         (JSC::DFG::NonSpeculativeJIT::valueToInt32):
2670         (JSC::DFG::NonSpeculativeJIT::numberToInt32):
2671         (JSC::DFG::NonSpeculativeJIT::isKnownInteger):
2672         (JSC::DFG::NonSpeculativeJIT::isKnownNumeric):
2673         (JSC::DFG::NonSpeculativeJIT::compile):
2674         * dfg/DFGNonSpeculativeJIT.h:
2675         (JSC::DFG::NonSpeculativeJIT::silentSpillGPR):
2676         (JSC::DFG::NonSpeculativeJIT::silentSpillFPR):
2677         (JSC::DFG::NonSpeculativeJIT::silentFillGPR):
2678         (JSC::DFG::NonSpeculativeJIT::silentFillFPR):
2679         (JSC::DFG::NonSpeculativeJIT::silentSpillAllRegisters):
2680         (JSC::DFG::NonSpeculativeJIT::silentFillAllRegisters):
2681         * dfg/DFGSpeculativeJIT.cpp:
2682         (JSC::DFG::SpeculativeJIT::compile):
2683
2684 2011-04-14  Geoffrey Garen  <ggaren@apple.com>
2685
2686         Reviewed by Oliver Hunt.
2687
2688         Drain the mark stack while marking weak handles, not after.
2689         https://bugs.webkit.org/show_bug.cgi?id=58574
2690
2691         Otherwise, items that would have caused more weak handle marking are
2692         processed after all weak handle marking has finished, and referenced
2693         weak handles get recycled.
2694
2695         * heap/HandleHeap.cpp:
2696         (JSC::HandleHeap::markWeakHandles): Removed looping from here, since we
2697         want Heap::markRoots to be responsible for draining the mark stack.
2698
2699         * heap/Heap.cpp:
2700         (JSC::Heap::markRoots): Moved looping to here, as explained above.
2701         
2702         For efficiency's sake, drain the mark stack before starting to mark weak
2703         handles. Otherwise, items drained while marking weak handles may force
2704         an extra trip through the weak handle list.
2705
2706         For correctness's sake, drain the mark stack each time through the weak
2707         handle list. Otherwise, opaque roots that would make weak handles reachable
2708         are not discovered until after weak handle marking is over.
2709
2710 2011-04-14  Oliver Hunt  <oliver@apple.com>
2711
2712         Reviewed by Geoffrey Garen.
2713
2714         Make protected object list in caches window reflect reality
2715         https://bugs.webkit.org/show_bug.cgi?id=58565
2716
2717         Make sure the heap includes objects protected by Strong handles
2718         in its list of protected objects.
2719
2720         * heap/HandleHeap.h:
2721         * heap/Heap.cpp:
2722         (JSC::HandleHeap::protectedObjectTypeCounts):
2723
2724 2011-04-14  Satish Sampath  <satish@chromium.org>
2725
2726         Reviewed by Anders Carlsson.
2727
2728         Don't emit RegExp tables for chromium where they are not used
2729         https://bugs.webkit.org/show_bug.cgi?id=58544
2730
2731         * JavaScriptCore.gyp/JavaScriptCore.gyp:
2732         * create_regex_tables: Added the "--notables" command line argument.
2733
2734 2011-04-13  Geoffrey Garen  <ggaren@apple.com>
2735
2736         Try to fix ASSERTs seen on Windows bots.
2737
2738         * wtf/HashTable.h:
2739         (WTF::hashTableSwap): Force MSVC to use the right version of swap.
2740
2741 2011-04-13  Ryuan Choi  <ryuan.choi@samsung.com>
2742
2743         Reviewed by Kenneth Rohde Christiansen.
2744
2745         [CMAKE] Separate DerivedSources.
2746         https://bugs.webkit.org/show_bug.cgi?id=58427
2747
2748         * CMakeLists.txt: Change DERIVED_SOURCES_DIR to DERIVED_SOURCES_JAVASCRIPTCORE_DIR.
2749
2750 2011-04-13  Geoffrey Garen  <ggaren@apple.com>
2751
2752         Reviewed by Oliver Hunt.
2753
2754         Switched DOM wrappers to use HashMap of Weak<T> instead of WeakGCMap<T>
2755         https://bugs.webkit.org/show_bug.cgi?id=58482
2756         
2757         This will allow wrappers to make individual decisions about their lifetimes.
2758
2759         * heap/HandleHeap.h:
2760         (JSC::HandleHeap::copyWeak): New function for copying a weak handle.
2761         It's wasn't previously possible to perform this operation using HandleHeap
2762         API because the HandleHeap doesn't expose its underlying Node structure.
2763
2764         * heap/Local.h:
2765         (JSC::::set):
2766         * heap/Strong.h:
2767         (JSC::Strong::set): Added ASSERTs to verify that dead objects are not
2768         resurrected by placement into handles.
2769
2770         (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table
2771         is efficient.
2772
2773         * heap/Weak.h:
2774         (JSC::Weak::Weak): Fixed a bug where copying a weak pointer would not
2775         copy its weak callback and context.
2776
2777         (JSC::Weak::operator=): Added an assignment operator, since the default
2778         C++ assignment operator did the wrong thing.
2779
2780         (JSC::Weak::set): Added ASSERTs to verify that dead objects are not
2781         resurrected by placement into handles.
2782
2783         (JSC::swap): Added a swap helper, so use of Strong<T> inside a hash table
2784         is efficient, and can be done without copying, which is illegal during
2785         the handle finalization phase.
2786
2787 2011-04-13  Oliver Hunt  <oliver@apple.com>
2788
2789         Reviewed by Gavin Barraclough.
2790
2791         Make PropertyMapEntry use a WriteBarrier for specificValue
2792         https://bugs.webkit.org/show_bug.cgi?id=58407
2793
2794         Make PropertyMapEntry use a WriteBarrier for specificValue, and then
2795         propagate the required JSGlobalData through all the methods it ends
2796         up being needed.
2797
2798         * API/JSClassRef.cpp:
2799         (OpaqueJSClass::prototype):
2800         * API/JSContextRef.cpp:
2801         * API/JSObjectRef.cpp:
2802         (JSObjectMake):
2803         (JSObjectSetPrototype):
2804         * JavaScriptCore.exp:
2805         * bytecompiler/BytecodeGenerator.cpp:
2806         (JSC::BytecodeGenerator::BytecodeGenerator):
2807         * interpreter/Interpreter.cpp:
2808         (JSC::appendSourceToError):
2809         (JSC::Interpreter::tryCacheGetByID):
2810         (JSC::Interpreter::privateExecute):
2811         * jit/JITStubs.cpp:
2812         (JSC::JITThunks::tryCacheGetByID):
2813         (JSC::DEFINE_STUB_FUNCTION):
2814         * runtime/BatchedTransitionOptimizer.h:
2815         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
2816         * runtime/InternalFunction.cpp:
2817         (JSC::InternalFunction::name):
2818         (JSC::InternalFunction::displayName):
2819         * runtime/JSActivation.cpp:
2820         (JSC::JSActivation::getOwnPropertySlot):
2821         * runtime/JSFunction.cpp:
2822         (JSC::JSFunction::name):
2823         (JSC::JSFunction::displayName):
2824         (JSC::JSFunction::getOwnPropertySlot):
2825         * runtime/JSGlobalObject.cpp:
2826         (JSC::JSGlobalObject::putWithAttributes):
2827         (JSC::JSGlobalObject::reset):
2828         (JSC::JSGlobalObject::resetPrototype):
2829         * runtime/JSGlobalObject.h:
2830         * runtime/JSObject.cpp:
2831         (JSC::JSObject::put):
2832         (JSC::JSObject::deleteProperty):
2833         (JSC::JSObject::defineGetter):
2834         (JSC::JSObject::defineSetter):
2835         (JSC::JSObject::lookupGetter):
2836         (JSC::JSObject::lookupSetter):
2837         (JSC::JSObject::getPropertySpecificValue):
2838         (JSC::JSObject::getOwnPropertyNames):
2839         (JSC::JSObject::seal):
2840         (JSC::JSObject::freeze):
2841         (JSC::JSObject::preventExtensions):
2842         (JSC::JSObject::removeDirect):
2843         (JSC::JSObject::getOwnPropertyDescriptor):
2844         (JSC::JSObject::defineOwnProperty):
2845         * runtime/JSObject.h:
2846         (JSC::JSObject::getDirect):
2847         (JSC::JSObject::getDirectLocation):
2848         (JSC::JSObject::isSealed):
2849         (JSC::JSObject::isFrozen):
2850         (JSC::JSObject::setPrototypeWithCycleCheck):
2851         (JSC::JSObject::setPrototype):
2852         (JSC::JSObject::inlineGetOwnPropertySlot):
2853         (JSC::JSObject::putDirectInternal):
2854         (JSC::JSObject::putDirectWithoutTransition):
2855         (JSC::JSObject::putDirectFunctionWithoutTransition):
2856         * runtime/Lookup.cpp:
2857         (JSC::setUpStaticFunctionSlot):
2858         * runtime/ObjectConstructor.cpp:
2859         (JSC::objectConstructorCreate):
2860         (JSC::objectConstructorSeal):
2861         (JSC::objectConstructorFreeze):
2862         (JSC::objectConstructorPreventExtensions):
2863         (JSC::objectConstructorIsSealed):
2864         (JSC::objectConstructorIsFrozen):
2865         * runtime/Operations.h:
2866         (JSC::normalizePrototypeChain):
2867         * runtime/PropertyMapHashTable.h:
2868         (JSC::PropertyMapEntry::PropertyMapEntry):
2869         (JSC::PropertyTable::PropertyTable):
2870         (JSC::PropertyTable::copy):
2871         * runtime/Structure.cpp:
2872         (JSC::Structure::materializePropertyMap):
2873         (JSC::Structure::despecifyDictionaryFunction):
2874         (JSC::Structure::addPropertyTransition):
2875         (JSC::Structure::removePropertyTransition):
2876         (JSC::Structure::changePrototypeTransition):
2877         (JSC::Structure::despecifyFunctionTransition):
2878         (JSC::Structure::getterSetterTransition):
2879         (JSC::Structure::toDictionaryTransition):
2880         (JSC::Structure::toCacheableDictionaryTransition):
2881         (JSC::Structure::toUncacheableDictionaryTransition):
2882         (JSC::Structure::sealTransition):
2883         (JSC::Structure::freezeTransition):
2884         (JSC::Structure::preventExtensionsTransition):
2885         (JSC::Structure::isSealed):
2886         (JSC::Structure::isFrozen):
2887         (JSC::Structure::addPropertyWithoutTransition):
2888         (JSC::Structure::removePropertyWithoutTransition):
2889         (JSC::Structure::copyPropertyTable):
2890         (JSC::Structure::get):
2891         (JSC::Structure::despecifyFunction):
2892         (JSC::Structure::despecifyAllFunctions):
2893         (JSC::Structure::put):
2894         (JSC::Structure::getPropertyNames):
2895         * runtime/Structure.h:
2896         (JSC::Structure::get):
2897         (JSC::Structure::materializePropertyMapIfNecessary):
2898
2899 2011-04-13  Paul Knight  <pknight@apple.com>
2900
2901         Reviewed by Gavin Barraclough.
2902
2903         BACKTRACE() macro should check for Debug configuration in macro, not WTFReportBacktrace definition
2904         https://bugs.webkit.org/show_bug.cgi?id=58405
2905
2906         The BACKTRACE() macro requires JavaScriptCore be built with a Debug
2907         configuration in order for it to be enabled. Move the NDEBUG check to
2908         the header so it will be enabled when the calling framework or
2909         application is built with a Debug configuration, similar to how
2910         ASSERT() and friends work.
2911
2912         * wtf/Assertions.cpp:
2913         * wtf/Assertions.h:
2914
2915 2011-04-12  Ben Taylor  <bentaylor.solx86@gmail.com>
2916
2917         Reviewed by Alexey Proskuryakov.
2918
2919         https://bugs.webkit.org/show_bug.cgi?id=58131
2920
2921         Provide a workaround for an obscure Studio 12 compiler bug, which
2922         couldn't call src->~T() on a const T *src.
2923
2924         * wtf/Vector.h:
2925
2926 2011-04-12  Gavin Barraclough  <barraclough@apple.com>
2927
2928         Reviewed by Oliver Hunt.
2929
2930         https://bugs.webkit.org/show_bug.cgi?id=58395
2931         Exceptions thrown from property getters called from Array prototype functions can be missed
2932
2933         This is caught by an ASSERT in the top of Interpreter::executeCall.
2934         Check for exceptions after accessing properties that could be getters.
2935
2936         * runtime/ArrayPrototype.cpp:
2937         (JSC::arrayProtoFuncSort):
2938         (JSC::arrayProtoFuncFilter):
2939         (JSC::arrayProtoFuncMap):
2940         (JSC::arrayProtoFuncEvery):
2941         (JSC::arrayProtoFuncForEach):
2942         (JSC::arrayProtoFuncSome):
2943         (JSC::arrayProtoFuncReduce):
2944         (JSC::arrayProtoFuncReduceRight):
2945             - Add exception checks.
2946
2947 2011-04-12  Oliver Hunt  <oliver@apple.com>
2948
2949         Reviewed by Geoffrey Garen.
2950
2951         Make API callback objects use weak handles to run their finalizers
2952         https://bugs.webkit.org/show_bug.cgi?id=58389
2953
2954         Make the API object's private data struct act as a finalizer for
2955         an api object if the callback object has a API defined finalizer.
2956
2957         * API/JSCallbackObject.cpp:
2958         (JSC::JSCallbackObjectData::finalize):
2959         * API/JSCallbackObject.h:
2960         * API/JSCallbackObjectFunctions.h:
2961         (JSC::::init):
2962         * heap/Handle.h:
2963
2964 2011-04-12  Geoffrey Garen  <ggaren@apple.com>
2965
2966         Reviewed by Geoffrey Garen.
2967
2968         Cleaned up hash traits, and added hash traits for handles
2969         https://bugs.webkit.org/show_bug.cgi?id=58381
2970
2971         * heap/Handle.h:
2972         (JSC::HandleBase::swap):
2973         (JSC::Handle::Handle):
2974         (JSC::Handle::swap): Implemented swap, so we can rehash efficiently, and
2975         without creating new handles (which is not allowed during handle finalization).
2976
2977         * heap/Strong.h:
2978         (JSC::Strong::swap): Use new SimpleClassHashTraits to avoid duplication.
2979
2980         * heap/Weak.h:
2981         (JSC::Weak::isHashTableDeletedValue):
2982         (JSC::Weak::Weak):
2983         (JSC::Weak::swap):
2984         (JSC::Weak::hashTableDeletedValue): Ditto.
2985
2986         * wtf/HashTraits.h:
2987         (WTF::SimpleClassHashTraits::constructDeletedValue):
2988         (WTF::SimpleClassHashTraits::isDeletedValue): Added SimpleClassHashTraits,
2989         which are analogous to SimpleClassVectorTraits, since they are used in a
2990         bunch of places.
2991
2992         * wtf/RetainPtr.h: Use new SimpleClassHashTraits to avoid duplication.
2993
2994         * wtf/text/StringHash.h: Use new SimpleClassHashTraits to avoid duplication.
2995
2996 2011-04-12  Geoffrey Garen  <ggaren@apple.com>
2997
2998         Reviewed by Sam Weinig.
2999
3000         Cleaned up some Vector traits, and added missing Vector traits for handles
3001         https://bugs.webkit.org/show_bug.cgi?id=58372
3002
3003         * heap/Local.h: Inherit from SimpleClassVectorTraits to avoid duplication.
3004
3005         * heap/Strong.h: Ditto.
3006
3007         * heap/Weak.h: Ditto.
3008
3009         * parser/JSParser.cpp: Fixed a traits error. No test case because this
3010         particular trait is not currently exercised by the parser.
3011
3012         * runtime/UString.h: No need to override canInitializeWithMemset, since
3013         our base class sets it to true.
3014
3015         * wtf/VectorTraits.h: Inherit from VectorTraitsBase to avoid duplication.
3016
3017         * wtf/text/WTFString.h: No need to override canInitializeWithMemset, since
3018         our base class sets it to true.
3019
3020 2011-04-12  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
3021
3022         Reviewed by Eric Seidel.
3023
3024         [Qt] Enable JIT build for SH4 platforms.
3025         https://bugs.webkit.org/show_bug.cgi?id=58317
3026         enable JIT build for QT backend  for SH4 platforms.
3027
3028         * JavaScriptCore.pro:
3029         * wtf/Platform.h:
3030
3031 2011-04-11  Ben Taylor  <bentaylor.solx86@gmail.com>
3032
3033         Reviewed by Alexey Proskuryakov.
3034
3035         https://bugs.webkit.org/show_bug.cgi?id=58289
3036
3037         Fix compilation on Solaris/Studio 12 C++ in wtf/FastMalloc.cpp,
3038         WTF::TCMalloc_PageHeap::runScavengerThread(void*) expected to return a value.
3039
3040         * wtf/FastMalloc.cpp:
3041         (WTF::TCMalloc_PageHeap::runScavengerThread):
3042
3043 2011-04-11  Mark Rowe  <mrowe@apple.com>
3044
3045         Fix the build.
3046
3047         * JavaScriptCore.xcodeproj/project.pbxproj: Headers used outside of JavaScriptCore need to be marked as private.
3048
3049 2011-04-11  Anna Cavender  <annacc@chromium.org>
3050
3051         Reviewed by Eric Carlson.
3052
3053         Setup ENABLE(TRACK) feature define
3054         https://bugs.webkit.org/show_bug.cgi?id=53556
3055
3056
3057         * Configurations/FeatureDefines.xcconfig:
3058
3059 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
3060
3061         Try to fix a few builds.
3062         
3063         Updated a few more build configurations for file moves.
3064
3065         * CMakeListsWinCE.txt:
3066
3067 2011-04-11  Gavin Barraclough  <barraclough@apple.com>
3068
3069         Reviewed by Sam Weinig.
3070
3071         Bug 58263 - Use EncodedValueDescriptor on both JSVALUE32_64, JSVALUE64
3072
3073         The JSJITInterface already uses EncodedValueDescriptor to access the tag/payload
3074         separately on JSVALUE64, even though EncodedValueDescriptor is not used in
3075         JSVALUE64's implementation of JSValue. Remove the separate definition for m_ptr
3076         on X86_64. Using the union allows us to remove a layer of makeImmediate()/
3077         immedaiteValue() methods.
3078
3079         * dfg/DFGNonSpeculativeJIT.cpp:
3080         (JSC::DFG::NonSpeculativeJIT::compile):
3081         * dfg/DFGSpeculativeJIT.cpp:
3082         (JSC::DFG::SpeculativeJIT::compile):
3083         * jit/JITInlineMethods.h:
3084         (JSC::JIT::emitTagAsBoolImmediate):
3085         * jit/JITOpcodes.cpp:
3086         (JSC::JIT::emit_op_not):
3087         (JSC::JIT::emit_op_jeq_null):
3088         (JSC::JIT::emit_op_jneq_null):
3089         (JSC::JIT::emit_op_get_pnames):
3090         (JSC::JIT::emit_op_eq_null):
3091         (JSC::JIT::emit_op_neq_null):
3092         (JSC::JIT::emitSlow_op_not):
3093         * runtime/JSCell.h:
3094         * runtime/JSValue.h:
3095         * runtime/JSValueInlineMethods.h:
3096         (JSC::JSValue::encode):
3097         (JSC::JSValue::decode):
3098         (JSC::JSValue::operator==):
3099         (JSC::JSValue::operator!=):
3100         (JSC::JSValue::JSValue):
3101         (JSC::JSValue::operator bool):
3102         (JSC::JSValue::asInt32):
3103         (JSC::JSValue::isUndefinedOrNull):
3104         (JSC::JSValue::isBoolean):
3105         (JSC::JSValue::isCell):
3106         (JSC::JSValue::isInt32):
3107         (JSC::JSValue::asDouble):
3108         (JSC::JSValue::isNumber):
3109         (JSC::JSValue::asCell):
3110
3111 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
3112
3113         Try to fix a few builds.
3114         
3115         Updated a few more build configurations for file moves.
3116
3117         * CMakeListsEfl.txt:
3118         * wscript:
3119
3120 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
3121
3122         Build fix: Updated a file name.
3123
3124         * CMakeLists.txt:
3125
3126 2011-04-11  Geoffrey Garen  <ggaren@apple.com>
3127
3128         Rubber-stamped by Sam Weinig.
3129         
3130         Moved remaining heap implementation files to the heap folder.
3131
3132         * Android.mk:
3133         * CMakeLists.txt:
3134         * GNUmakefile.list.am:
3135         * JavaScriptCore.gypi:
3136         * JavaScriptCore.pro:
3137         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3138         * JavaScriptCore.xcodeproj/project.pbxproj:
3139         * heap/ConservativeRoots.cpp: Copied from runtime/ConservativeSet.cpp.
3140         * heap/ConservativeRoots.h: Copied from runtime/ConservativeSet.h.
3141         * heap/Handle.h:
3142         * heap/Heap.cpp:
3143         * heap/MachineStackMarker.cpp: Copied from runtime/MachineStackMarker.cpp.
3144         * heap/MachineStackMarker.h: Copied from runtime/MachineStackMarker.h.
3145         * heap/MarkStack.cpp: Copied from runtime/MarkStack.cpp.
3146         * heap/MarkStack.h: Copied from runtime/MarkStack.h.
3147         * heap/MarkStackPosix.cpp: Copied from runtime/MarkStackPosix.cpp.
3148         * heap/MarkStackSymbian.cpp: Copied from runtime/MarkStackSymbian.cpp.
3149         * heap/MarkStackWin.cpp: Copied from runtime/MarkStackWin.cpp.
3150         * heap/MarkedBlock.cpp: Copied from runtime/MarkedBlock.cpp.
3151         * heap/MarkedBlock.h: Copied from runtime/MarkedBlock.h.
3152         * heap/MarkedSpace.cpp: Copied from runtime/MarkedSpace.cpp.
3153         * heap/MarkedSpace.h: Copied from runtime/MarkedSpace.h.
3154         * interpreter/RegisterFile.cpp:
3155         * runtime/ConservativeSet.cpp: Removed.
3156         * runtime/ConservativeSet.h: Removed.
3157         * runtime/MachineStackMarker.cpp: Removed.
3158         * runtime/MachineStackMarker.h: Removed.
3159         * runtime/MarkStack.cpp: Removed.
3160         * runtime/MarkStack.h: Removed.
3161         * runtime/MarkStackPosix.cpp: Removed.
3162         * runtime/MarkStackSymbian.cpp: Removed.
3163         * runtime/MarkStackWin.cpp: Removed.
3164         * runtime/MarkedBlock.cpp: Removed.
3165         * runtime/MarkedBlock.h: Removed.
3166         * runtime/MarkedSpace.cpp: Removed.
3167         * runtime/MarkedSpace.h: Removed.
3168
3169 2011-04-11  Gavin Barraclough  <barraclough@apple.com>
3170
3171         Windows build fix.
3172
3173         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3174
3175 2011-04-09  Gavin Barraclough  <barraclough@apple.com>
3176
3177         Reviewed by Sam Weinig.
3178
3179         Bug 58198 - Clean up JSValue implementation for JSVALUE64
3180
3181         Remove JSNumberCell, JSImmediate, unify some methods between JSVALUE32_64/JSVALUE64
3182
3183         JSNumberCell.h largely just contained the constructors for JSValue on JSVALUE64,
3184         which should not have been here.  JSImmediate mostly contained uncalled methods,
3185         along with the internal implementation of the JSValue constructors split unnecessarily
3186         across a number of layers of function calls. These could largely be merged back
3187         together. Many methods and constructors from JSVALUE32_64 and JSVALUE64 can by unified.
3188
3189         The .cpp files were empty.
3190
3191         Moving all these methods into JSValue.h seems to be a repro measurable regression, so
3192         I have kept these methods in a separate JSValueInlineMethods.h. Adding the 64-bit tag
3193         values as static const members of JSValue also measures as a repro regression, so I
3194         have made these #defines.
3195
3196         * Android.mk:
3197         * CMakeLists.txt:
3198         * GNUmakefile.list.am:
3199         * JavaScriptCore.exp:
3200         * JavaScriptCore.gypi:
3201         * JavaScriptCore.pro:
3202         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3203         * JavaScriptCore.xcodeproj/project.pbxproj:
3204             - Removed JSImmediate.h, JSNumberCell.h.
3205         * bytecompiler/BytecodeGenerator.cpp:
3206         (JSC::BytecodeGenerator::emitLoad):
3207             - Removed class JSImmediate.
3208         * dfg/DFGNonSpeculativeJIT.cpp:
3209         (JSC::DFG::NonSpeculativeJIT::compile):
3210             - Removed class JSImmediate.
3211         * dfg/DFGSpeculativeJIT.cpp:
3212         (JSC::DFG::SpeculativeJIT::compile):
3213             - Removed class JSImmediate.
3214         * jit/JITArithmetic.cpp:
3215         (JSC::JIT::compileBinaryArithOpSlowCase):
3216             - Removed class JSImmediate.
3217         * jit/JITInlineMethods.h:
3218         (JSC::JIT::emitJumpIfJSCell):
3219         (JSC::JIT::emitJumpIfNotJSCell):
3220         (JSC::JIT::emitJumpIfImmediateInteger):
3221         (JSC::JIT::emitJumpIfNotImmediateInteger):
3222         (JSC::JIT::emitFastArithDeTagImmediate):
3223         (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
3224         (JSC::JIT::emitFastArithReTagImmediate):
3225         (JSC::JIT::emitTagAsBoolImmediate):
3226             - Removed class JSImmediate.
3227         * jit/JITOpcodes.cpp:
3228         (JSC::JIT::emit_op_not):
3229         (JSC::JIT::emit_op_jeq_null):
3230         (JSC::JIT::emit_op_jneq_null):
3231         (JSC::JIT::emit_op_get_pnames):
3232         (JSC::JIT::emit_op_eq_null):
3233         (JSC::JIT::emit_op_neq_null):
3234         (JSC::JIT::emitSlow_op_not):
3235             - Removed class JSImmediate.
3236         * jit/JSInterfaceJIT.h:
3237             - Removed class JSImmediate.
3238         * runtime/JSCell.h:
3239             - Removed JSImmediate.h, JSNumberCell.h.
3240         * runtime/JSImmediate.cpp: Removed.
3241         * runtime/JSImmediate.h: Removed.
3242         * runtime/JSNumberCell.cpp: Removed.
3243         * runtime/JSNumberCell.h: Removed.
3244             - Removed.
3245         * runtime/JSObject.h:
3246             - Removed JSImmediate.h, JSNumberCell.h.
3247         * runtime/JSString.h:
3248             - Removed JSImmediate.h, JSNumberCell.h.
3249         * runtime/JSValue.h:
3250             - Added tags for JSVALUE64, moved out some JSVALUE32_64 methods, unified with JSVALUE64.
3251         * runtime/JSValueInlineMethods.h: Added.
3252         (JSC::JSValue::toInt32):
3253         (JSC::JSValue::toUInt32):
3254         (JSC::JSValue::isUInt32):
3255         (JSC::JSValue::asUInt32):
3256         (JSC::JSValue::uncheckedGetNumber):
3257         (JSC::JSValue::toJSNumber):
3258         (JSC::jsNaN):
3259         (JSC::JSValue::getNumber):
3260         (JSC::JSValue::getBoolean):
3261         (JSC::JSValue::JSValue):
3262         (JSC::JSValue::encode):
3263         (JSC::JSValue::decode):
3264         (JSC::JSValue::operator bool):
3265         (JSC::JSValue::operator==):
3266         (JSC::JSValue::operator!=):
3267         (JSC::JSValue::isUndefined):
3268         (JSC::JSValue::isNull):
3269         (JSC::JSValue::isUndefinedOrNull):
3270         (JSC::JSValue::isCell):
3271         (JSC::JSValue::isInt32):
3272         (JSC::JSValue::isDouble):
3273         (JSC::JSValue::isTrue):
3274         (JSC::JSValue::isFalse):
3275         (JSC::JSValue::tag):
3276         (JSC::JSValue::payload):
3277         (JSC::JSValue::asInt32):
3278         (JSC::JSValue::asDouble):
3279         (JSC::JSValue::asCell):
3280         (JSC::JSValue::isNumber):
3281         (JSC::JSValue::isBoolean):
3282         (JSC::JSValue::makeImmediate):
3283         (JSC::JSValue::immediateValue):
3284         (JSC::reinterpretDoubleToIntptr):
3285         (JSC::reinterpretIntptrToDouble):
3286             - Methods moved here from JSImmediate.h/JSNumberCell.h/JSValue.h.
3287         * runtime/Operations.h:
3288             - Removed JSImmediate.h, JSNumberCell.h.
3289         * wtf/StdLibExtras.h:
3290             - Export bitwise_cast.
3291
3292 2011-04-11  Thouraya ANDOLSI  <thouraya.andolsi@st.com>
3293
3294         Reviewed by Oliver Hunt.
3295
3296         SH4 JIT SUPPORT.
3297         https://bugs.webkit.org/show_bug.cgi?id=44329
3298
3299         Add JIT remaining part for SH4 platforms.
3300
3301         * assembler/MacroAssemblerSH4.h:
3302         * jit/JIT.h:
3303         * jit/JITInlineMethods.h:
3304         * jit/JITOpcodes32_64.cpp:
3305         * jit/JITPropertyAccess32_64.cpp:
3306         * jit/JITStubs.cpp:
3307         * jit/JITStubs.h:
3308         * jit/JSInterfaceJIT.h:
3309
3310 2011-04-10  Geoffrey Garen  <ggaren@apple.com>
3311
3312         Rubber-stamped by Beth Dakin.
3313
3314         Moved Heap.h and Heap.cpp to the heap folder, because anything less 
3315         would be uncivilized.
3316
3317         * Android.mk:
3318         * CMakeLists.txt:
3319         * GNUmakefile.list.am:
3320         * JavaScriptCore.gypi:
3321         * JavaScriptCore.pro:
3322         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3323         * JavaScriptCore.xcodeproj/project.pbxproj:
3324         * heap/Heap.cpp: Copied from JavaScriptCore/runtime/Heap.cpp.
3325         * heap/Heap.h: Copied from JavaScriptCore/runtime/Heap.h.
3326         * runtime/Heap.cpp: Removed.
3327         * runtime/Heap.h: Removed.
3328
3329 2011-04-10  Patrick Gansterer  <paroga@webkit.org>
3330
3331         Reviewed by Darin Adler.
3332
3333         Remove duplicated code from AtomicString::fromUTF8()
3334         https://bugs.webkit.org/show_bug.cgi?id=53711
3335
3336         * JavaScriptCore.exp:
3337         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3338         * wtf/text/AtomicString.cpp:
3339         (WTF::AtomicString::fromUTF8Internal):
3340         * wtf/text/AtomicString.h:
3341         (WTF::AtomicString::fromUTF8):
3342         * wtf/unicode/UTF8.cpp:
3343         (WTF::Unicode::calculateStringHashAndLengthFromUTF8):
3344         * wtf/unicode/UTF8.h:
3345
3346 2011-04-10  Maciej Stachowiak  <mjs@apple.com>
3347
3348         Not reviewed.
3349
3350         Fix build (at least on Lion) by adding some newish header files to
3351         PrivateHeaders.
3352
3353         * JavaScriptCore.xcodeproj/project.pbxproj:
3354
3355 2011-04-09  Geoffrey Garen  <ggaren@apple.com>
3356
3357         Not reviewed.
3358
3359         Try recommitting some things svn left out of its last commit.
3360
3361         * heap/Handle.h:
3362         (JSC::HandleBase::operator!):
3363         (JSC::HandleBase::HandleBase):
3364         (JSC::HandleBase::slot):
3365         (JSC::HandleBase::setSlot):
3366         (JSC::Handle::Handle):
3367         * heap/HandleHeap.cpp:
3368         (JSC::HandleHeap::markWeakHandles):
3369         (JSC::HandleHeap::finalizeWeakHandles):
3370         (JSC::HandleHeap::isValidWeakNode):
3371         * heap/HandleHeap.h:
3372         (JSC::HandleHeap::globalData):
3373
3374 2011-04-08  Geoffrey Garen  <ggaren@apple.com>
3375
3376         Reviewed by Oliver Hunt.
3377
3378         A few heap-related renames and file moves.
3379         
3380         WeakGCPtr<T> => Weak<T>
3381         Global<T> => Strong<T>
3382         collector/ => heap/
3383         collector/* => heap/*
3384         runtime/WeakGCPtr.h => heap/Weak.h
3385         
3386         (Eventually, even more files should move into the heap directory. Like
3387         Heap.h and Heap.cpp, for example.)
3388
3389         * API/JSClassRef.h:
3390         * CMakeLists.txt:
3391         * GNUmakefile.am:
3392         * GNUmakefile.list.am:
3393         * JavaScriptCore.gypi:
3394         * JavaScriptCore.pri:
3395         * JavaScriptCore.pro:
3396         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3397         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
3398         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd:
3399         * JavaScriptCore.vcproj/jsc/jscCommon.vsprops:
3400         * JavaScriptCore.xcodeproj/project.pbxproj:
3401         * bytecode/SamplingTool.h:
3402         * bytecompiler/BytecodeGenerator.h:
3403         * collector: Removed.
3404         * collector/handles: Removed.
3405         * collector/handles/Global.h: Removed.
3406         * collector/handles/Handle.h: Removed.
3407         * collector/handles/HandleHeap.cpp: Removed.
3408         * collector/handles/HandleHeap.h: Removed.
3409         * collector/handles/HandleStack.cpp: Removed.
3410         * collector/handles/HandleStack.h: Removed.
3411         * collector/handles/Local.h: Removed.
3412         * collector/handles/LocalScope.h: Removed.
3413         * heap: Copied from collector.
3414         * heap/Handle.h: Copied from collector/handles/Handle.h.
3415         * heap/HandleHeap.cpp: Copied from collector/handles/HandleHeap.cpp.
3416         * heap/HandleHeap.h: Copied from collector/handles/HandleHeap.h.
3417         * heap/HandleStack.cpp: Copied from collector/handles/HandleStack.cpp.
3418         * heap/HandleStack.h: Copied from collector/handles/HandleStack.h.
3419         * heap/Local.h: Copied from collector/handles/Local.h.
3420         * heap/LocalScope.h: Copied from collector/handles/LocalScope.h.
3421         * heap/Strong.h: Copied from collector/handles/Global.h.
3422         (JSC::Strong::Strong):
3423         (JSC::Strong::~Strong):
3424         (JSC::Strong::operator=):
3425         * heap/Weak.h: Copied from runtime/WeakGCPtr.h.
3426         (JSC::Weak::Weak):
3427         (JSC::Weak::~Weak):
3428         * heap/handles: Removed.
3429         * interpreter/RegisterFile.h:
3430         * jit/JITStubs.cpp:
3431         (JSC::JITThunks::hostFunctionStub):
3432         * jit/JITStubs.h:
3433         * runtime/Structure.h:
3434         * runtime/WeakGCPtr.h: Removed.
3435
3436 2011-04-08  Alpha Lam  <hclam@chromium.org>
3437
3438         Unreviewed, rolling out r83335.
3439         http://trac.webkit.org/changeset/83335
3440         https://bugs.webkit.org/show_bug.cgi?id=53556
3441
3442         GTK and QT bots are broken
3443
3444         * Configurations/FeatureDefines.xcconfig:
3445
3446 2011-04-08  Gavin Barraclough  <barraclough@apple.com>
3447
3448         Ooops, typo, build fix.
3449
3450         * dfg/DFGByteCodeParser.cpp:
3451         (JSC::DFG::ByteCodeParser::parse):
3452
3453 2011-04-08  Gavin Barraclough  <barraclough@apple.com>
3454
3455         Reviewed by Oliver Hunt.
3456
3457         Bug 58154 - Add support for comparison operators to the DFG JIT.
3458
3459         Add support for <, <=, ==, ===, and also !.  Add support for all corresponding
3460         bytecode ops, including the not- and -null forms.  Initially add functionally
3461         correct support, we'll revisit the performance.
3462
3463         * dfg/DFGByteCodeParser.cpp:
3464         (JSC::DFG::ByteCodeParser::ByteCodeParser):
3465         (JSC::DFG::ByteCodeParser::constantNull):
3466         (JSC::DFG::ByteCodeParser::parse):
3467             - Add support for parsing of bytecode opcodes, 
3468         * dfg/DFGJITCodeGenerator.h:
3469         (JSC::DFG::JITCodeGenerator::callOperation):
3470             - Add new operation call types, return bool values.
3471         * dfg/DFGNode.h:
3472             - Add new node types.
3473         * dfg/DFGNonSpeculativeJIT.cpp:
3474         (JSC::DFG::NonSpeculativeJIT::compile):
3475             - Add code generation for new nodes.
3476         * dfg/DFGOperations.cpp:
3477         (JSC::DFG::operationCompareLess):
3478         (JSC::DFG::operationCompareLessEq):
3479         (JSC::DFG::operationCompareEq):
3480         (JSC::DFG::operationCompareStrictEq):
3481         (JSC::DFG::dfgConvertJSValueToBoolean):
3482         * dfg/DFGOperations.h:
3483             - Add operation callbacks to implement new ops.
3484         * dfg/DFGSpeculativeJIT.cpp:
3485         (JSC::DFG::SpeculativeJIT::compile):
3486             - Add code generation for new nodes.
3487         * jit/JITOpcodes.cpp:
3488         (JSC::JIT::privateCompileCTIMachineTrampolines):
3489             - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
3490         * jit/JITPropertyAccess.cpp:
3491         (JSC::JIT::privateCompilePatchGetArrayLength):
3492             - Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
3493         * runtime/JSImmediate.h:
3494             - Make tag values public, rather than relying on a friend - this matches JSVALUE32_64.
3495
3496 2011-04-07  Anna Cavender  <annacc@chromium.org>
3497
3498         Reviewed by Eric Carlson.
3499
3500         Setup ENABLE(TRACK) feature define
3501         https://bugs.webkit.org/show_bug.cgi?id=53556
3502
3503
3504         * Configurations/FeatureDefines.xcconfig:
3505
3506 2011-04-07  Balazs Kelemen  <kbalazs@webkit.org>
3507
3508         Reviewed by Kenneth Rohde Christiansen.
3509
3510         [WK2][Qt][GTK] Introduce common use flag for the shared UNIX domain socket IPC implementation
3511         https://bugs.webkit.org/show_bug.cgi?id=58030
3512
3513         * wtf/Platform.h: Introduce USE(UNIX_DOMAIN_SOCKETS) for WebKit2.
3514
3515 2011-04-08  Adam Roben  <aroben@apple.com>
3516
3517         Clean build fix
3518
3519         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Don't try to delete directories that
3520         don't exist. Also switched from del /s to rmdir /s, which has the benefit of deleting the
3521         directory itself in addition to the files it contains.
3522
3523 2011-04-07  Geoffrey Garen  <ggaren@apple.com>
3524
3525         Reviewed by Maciej Stachowiak.
3526
3527         Some Handle<T> cleanup
3528         https://bugs.webkit.org/show_bug.cgi?id=58109
3529
3530         * bytecode/SamplingTool.h: Sorted alphabetically because that's the
3531         WebKit style. Added a Global.h #include that was previously missing
3532         but harmless.
3533
3534         * collector/handles/Global.h:
3535         (JSC::Global::Global): Added a null constructor. No need for a special
3536         tag, and the tag is incompatible with some data structures.
3537         
3538         (JSC::Global::isHashTableDeletedValue):
3539         (JSC::Global::~Global):
3540         (JSC::Global::set):
3541         (JSC::Global::operator=):
3542         (JSC::Global::clear):
3543         (JSC::Global::hashTableDeletedValue): Reordered constructors to be near
3544         each other.
3545
3546         (JSC::Global::setWithWriteBarrier): Renamed internalSet to
3547         setWithWriteBarrier for clarity, and funneled more code into using set
3548         and setWithWriteBarrier to reduce duplication.
3549
3550         * collector/handles/Handle.h:
3551         (JSC::HandleBase::operator!):
3552         (JSC::HandleBase::HandleBase): Removed isEmpty(), since we already have
3553         boolean and ! operators.
3554
3555         (JSC::HandleBase::slot):
3556         (JSC::HandleBase::setSlot):
3557         (JSC::Handle::Handle): Added general support for null Handles. This was
3558         previously outlawed by ASSERTs, but our code has grown to support and
3559         rely on null Handles.
3560         
3561         * collector/handles/HandleHeap.cpp:
3562         (JSC::HandleHeap::markWeakHandles):
3563         (JSC::HandleHeap::finalizeWeakHandles):
3564         (JSC::HandleHeap::isValidWeakNode): Migrated from isValidWeakHandle,
3565         and beefed this up a bit.
3566
3567         * collector/handles/HandleHeap.h:
3568         (JSC::HandleHeap::globalData): Added accessor, used by some new set functions.
3569
3570         * collector/handles/Local.h: Moved hash traits to the bottom of the file,
3571         since this file is about the Local class, not the traits.
3572
3573         (JSC::::Local): Updated for removal of invalidate().
3574
3575         (JSC::::operator): Deployed "using" to avoid a lot of this->
3576         template funny business.
3577
3578         (JSC::::setWithSlotCheck): Renamed from internalSet, more specific now.
3579
3580         * interpreter/RegisterFile.h:
3581         (JSC::RegisterFile::RegisterFile): Updated to use null constructor.
3582
3583         * jit/JITStubs.cpp:
3584         (JSC::JITThunks::hostFunctionStub):
3585
3586         * runtime/JSPropertyNameIterator.h:
3587         (JSC::Structure::setEnumerationCache):
3588         * runtime/Structure.h: Removed clearEnumerationCache
3589         because it was an unused holdover from when the enumeration cache was
3590         not a handle.
3591
3592         * runtime/WeakGCMap.h:
3593         (JSC::WeakGCMap::set): Finish initializing our handle before putting it
3594         in the table. This seemed more logical, and at one point was required
3595         to avoid triggering an ASSERT.
3596
3597         * runtime/WeakGCPtr.h: Inherit from Handle instead of rolling our own
3598         handle-like behavior, to avoid duplication.
3599
3600         (JSC::WeakGCPtr::WeakGCPtr):
3601         (JSC::WeakGCPtr::~WeakGCPtr):
3602         (JSC::WeakGCPtr::get):
3603         (JSC::WeakGCPtr::clear):
3604         (JSC::WeakGCPtr::set):
3605         (JSC::WeakGCPtr::setWithWriteBarrier): Removed duplicate code and
3606         standardized on Handle idioms.
3607
3608 2011-04-07  Adam Barth  <abarth@webkit.org>
3609
3610         Reviewed by Martin Robinson.
3611
3612         Refactor Gtk build system to separate list of files
3613         https://bugs.webkit.org/show_bug.cgi?id=58090
3614
3615         This is the first step towards generating part of the GTK build system
3616         using GYP.  In the first iteration, our plan is to just generate the
3617         list of files.  This patch is the first step, which is to separate out
3618         the part of JavaScriptCore build system that we intend to generate from
3619         the rest of the build system.
3620
3621         * GNUmakefile.am:
3622         * GNUmakefile.list.am: Added.
3623
3624 2011-04-07  Zoltan Herczeg  <zherczeg@webkit.org>
3625
3626         Reviewed by Gavin Barraclough.
3627
3628         Mapping booleans the same way as integers
3629         https://bugs.webkit.org/show_bug.cgi?id=56913
3630
3631         Instead of having a seperate tag field for booleans,
3632         the logical values are stored in the payload field
3633         (for JSValue32_64 representation).
3634
3635         1.007x speedup on SunSpider.
3636
3637         * jit/JIT.h:
3638         * jit/JITInlineMethods.h:
3639         (JSC::JIT::emitStoreBool):
3640         * jit/JITOpcodes32_64.cpp:
3641         (JSC::JIT::emit_op_instanceof):
3642         (JSC::JIT::emit_op_not):
3643         (JSC::JIT::emit_op_jfalse):
3644         (JSC::JIT::emitSlow_op_jfalse):
3645         (JSC::JIT::emit_op_jtrue):
3646         (JSC::JIT::emitSlow_op_jtrue):
3647         (JSC::JIT::emit_op_jeq_null):
3648         (JSC::JIT::emit_op_jneq_null):
3649         (JSC::JIT::emit_op_eq):
3650         (JSC::JIT::emitSlow_op_eq):
3651         (JSC::JIT::emit_op_neq):
3652         (JSC::JIT::emitSlow_op_neq):
3653         (JSC::JIT::compileOpStrictEq):
3654         (JSC::JIT::emit_op_eq_null):
3655         (JSC::JIT::emit_op_neq_null):
3656         * jit/JSInterfaceJIT.h:
3657         * runtime/JSValue.h:
3658         (JSC::JSValue::JSValue):
3659         (JSC::JSValue::isTrue):
3660         (JSC::JSValue::isFalse):
3661         (JSC::JSValue::getBoolean):
3662
3663 2011-04-07  Eric Seidel  <eric@webkit.org>
3664
3665         Reviewed by Adam Barth.
3666
3667         Add stub support for generating Gtk build system from gyp
3668         https://bugs.webkit.org/show_bug.cgi?id=58086
3669
3670         This does not produce a buildable JavaScriptCore, but it
3671         does allow running gyp/configure --port=gtk and having
3672         it generate a gtk.Makefile which we can use for testing
3673         the rest of the plumbing.
3674
3675         * gyp/gtk.gyp: Added.
3676
3677 2011-04-07  Andrew Scherkus  <scherkus@chromium.org>
3678
3679         Revert ENABLE_TRACK patch due to compile failures.
3680
3681         * Configurations/FeatureDefines.xcconfig:
3682
3683 2011-04-07  Adam Barth  <abarth@webkit.org>
3684
3685         Fix whitespace in GNUmakefile.am.
3686
3687         * GNUmakefile.am:
3688
3689 2011-04-07  Gavin Barraclough  <barraclough@apple.com>
3690
3691         Fix a couple of typos in comments that Darin spotted.
3692
3693         * jit/JITOpcodes.cpp:
3694         (JSC::JIT::emit_op_not):
3695         * runtime/JSImmediate.h:
3696
3697 2011-04-06  Gavin Barraclough  <barraclough@apple.com>
3698
3699         Reviewed by Geoff Garen.
3700         Bug 58057 - Store boolean payload in low bit of JSImmediate
3701
3702         And remove some uncalled functions from JSImmediate.h
3703
3704         * jit/JITInlineMethods.h:
3705         (JSC::JIT::emitTagAsBoolImmediate):
3706         * jit/JITOpcodes.cpp:
3707         (JSC::JIT::emit_op_not):
3708         * runtime/JSImmediate.h:
3709         (JSC::JSImmediate::makeInt):
3710         (JSC::JSImmediate::makeBool):
3711         (JSC::JSImmediate::intValue):
3712         (JSC::JSImmediate::boolValue):
3713         (JSC::JSImmediate::asInt32):
3714         (JSC::JSImmediate::toDouble):
3715         (JSC::JSValue::asInt32):
3716         (JSC::JSValue::isUInt32):
3717         (JSC::JSValue::asUInt32):
3718
3719 2011-04-07  Liang Qi  <liang.qi@nokia.com>
3720
3721         Reviewed by Laszlo Gombos.
3722
3723         [Qt][Symbian] Enable webkit build with GCCE on Symbian.
3724         https://bugs.webkit.org/show_bug.cgi?id=57841
3725
3726         * wtf/MathExtras.h: GCCE compiler doesn't support those std static functions.
3727
3728 2011-04-06  Dai Mikurube  <dmikurube@chromium.org>
3729
3730         Reviewed by David Levin.
3731
3732         Add QUOTA build flag for unified quota API
3733         https://bugs.webkit.org/show_bug.cgi?id=57918
3734
3735         * Configurations/FeatureDefines.xcconfig: Added QUOTA build flag
3736
3737 2011-04-06  Kevin Ollivier  <kevino@theolliviers.com>
3738         
3739         Reviewed by Darin Adler.
3740         
3741         Make sure JS_EXPORT_PRIVATE is an empty define when we aren't using the export macros.
3742         
3743         https://bugs.webkit.org/show_bug.cgi?id=27551
3744
3745         * config.h:
3746
3747 2011-04-06  Oliver Hunt  <oliver@apple.com>
3748
3749         Reviewed by Gavin Barraclough.
3750
3751         Stop JSObject::isUsingInlineStorage() from using the structure
3752         https://bugs.webkit.org/show_bug.cgi?id=57986
3753
3754         Make the isUsingInlineStorage() implementation just look at
3755         whether the property storage is inside the object.
3756
3757         * runtime/JSObject.h:
3758         (JSC::JSObject::isUsingInlineStorage):
3759         (JSC::JSObject::JSObject):
3760
3761 2011-04-06  Gavin Barraclough  <barraclough@apple.com>
3762
3763         Rubber stamped by Geoff Garen.
3764
3765         Update comments documenting JSVALUE64/JSVALUE32_64 JSValue representations.
3766
3767         * runtime/JSImmediate.h:
3768         * runtime/JSValue.h:
3769
3770 2011-04-06  Lucas De Marchi  <lucas.demarchi@profusion.mobi>
3771
3772         cmake: Fix build for ARMv7
3773
3774         * CMakeLists.txt: add missing file.
3775
3776 2011-04-06  Liang Qi  <liang.qi@nokia.com>
3777
3778         Reviewed by Benjamin Poulain.
3779
3780         Correct a include file name.
3781         https://bugs.webkit.org/show_bug.cgi?id=57839
3782
3783         * wtf/PageAllocatorSymbian.h: It should be case sensitive. This fix 
3784         builds on Unix hosts.
3785
3786 2011-04-06  Adam Roben  <aroben@apple.com>
3787
3788         Build fix after r83056
3789
3790         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: Added property svn:executable.
3791
3792 2011-04-06  Adam Roben  <aroben@apple.com>
3793
3794         Move JavaScriptCoreGenerated's file-copying logic out to a new script
3795
3796         Hopefully this will make it easier to modify this logic in the future. I also made the
3797         script much quieter than the old logic, since it didn't seem helpful to see long lists of
3798         filenames during the copying phase.
3799
3800         If we like this new style, we could copy it for our other projects.
3801
3802         Fixes <http://webkit.org/b/57950> JavaScriptCoreGenerated's file-copying logic is hard to
3803         modify and noisy
3804
3805         Reviewed by Steve Falkenburg.
3806
3807         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: Moved logic to copy
3808         files from here...
3809         * JavaScriptCore.vcproj/JavaScriptCore/copy-files.cmd: ...to here. (Added.)
3810
3811         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Added copy-files.cmd
3812         for convenience.
3813
3814 2011-04-05  Geoffrey Garen  <ggaren@apple.com>
3815
3816         Try to fix the Windows build.
3817
3818         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Who likes export files? I do!
3819
3820 2011-04-05  Geoffrey Garen  <ggaren@apple.com>
3821
3822         Reviewed by Oliver Hunt.
3823
3824         Introduced the concept of opaque roots, in preparation for marking the DOM with them
3825         https://bugs.webkit.org/show_bug.cgi?id=57903
3826
3827         * JavaScriptCore.exp: Who likes export files? I do!
3828
3829         * collector/handles/HandleHeap.cpp:
3830         (JSC::isValidWeakHandle): Factored out a helper function for ASSERTs.
3831
3832         (JSC::WeakHandleOwner::~WeakHandleOwner): Moved from header to avoid
3833         weak linkage problems.
3834
3835         (JSC::WeakHandleOwner::isReachableFromOpaqueRoots): New callback.
3836         Currently unused.
3837
3838         (JSC::WeakHandleOwner::finalize): Switched from pure virtual to a
3839         default empty implementation, since not all clients necessarily want
3840         or need non-trivial finalizers.
3841
3842         (JSC::HandleHeap::markWeakHandles): Split updateWeakHandles into two
3843         passes. The first pass marks all reachable weak handles. The second pass
3844         finalizes all unreachable weak handles. This must be two passes because
3845         we don't know the set of finalizable weak handles until we're done
3846         marking all weak handles.
3847
3848         (JSC::HandleHeap::finalizeWeakHandles): Use new helper function.
3849
3850         * collector/handles/HandleHeap.h: Ditto.
3851
3852         * runtime/Heap.cpp: 
3853         (JSC::Heap::destroy):
3854         (JSC::Heap::markRoots):
3855         (JSC::Heap::reset): Split out handle marking from handle finalization.
3856
3857         * runtime/MarkStack.cpp:
3858         (JSC::MarkStack::reset):
3859         * runtime/MarkStack.h:
3860         (JSC::MarkStack::addOpaqueRoot):
3861         (JSC::MarkStack::containsOpaqueRoot):
3862         (JSC::MarkStack::opaqueRootCount):
3863         (JSC::HeapRootMarker::markStack): New helper functions for managing the
3864         set of opaque roots.
3865
3866         * runtime/WeakGCMap.h:
3867         (JSC::WeakGCMap::finalize): Renamed to match parent class declaration.
3868
3869 2011-04-05  Balazs Kelemen  <kbalazs@webkit.org>
3870
3871         Reviewed by Darin Adler.
3872
3873         Build fix for YarrParser.h
3874         https://bugs.webkit.org/show_bug.cgi?id=57822
3875
3876         * yarr/YarrParser.h:
3877         (JSC::Yarr::Parser::CharacterClassParserDelegate::CharacterClassParserDelegate):
3878
3879 2011-04-05  Steve Falkenburg  <sfalken@apple.com>
3880
3881         Follow-up Windows build fix.
3882         Don't skip react-to-vsprops-changes.py for all production builds,
3883         only those initiated via JavaScriptCore.make.
3884
3885         * JavaScriptCore.vcproj/JavaScriptCore.make:
3886         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make:
3887
3888 2011-04-05  Oliver Hunt  <oliver@apple.com>
3889
3890         Reviewed by Darin Adler.
3891
3892         REGRESSION (r82849): 85,000+ JSC-related leaks seen on SnowLeopard Intel Leaks
3893         https://bugs.webkit.org/show_bug.cgi?id=57857
3894
3895         Whoops, accidentally removed a deref().
3896
3897         * bytecode/StructureStubInfo.cpp:
3898         (JSC::StructureStubInfo::deref):
3899
3900 2011-04-05  Steve Falkenburg  <sfalken@apple.com>
3901
3902         Windows build fix.
3903
3904         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Add per-configuration vsprops files.
3905         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedCommon.vsprops: Removed inheritance from common.vsprops.
3906         Set production environment variable before calling make.
3907         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebug.vsprops: Added.
3908         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugAll.vsprops: Added.
3909         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedDebugCairoCFLite.vsprops: Added.
3910         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedProduction.vsprops: Added.
3911         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedRelease.vsprops: Added.
3912         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleaseCairoCFLite.vsprops: Added.
3913         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGeneratedReleasePGO.vsprops: Added.
3914
3915 2011-04-05  Oliver Hunt  <oliver@apple.com>
3916
3917         Reviewed by Gavin Barraclough.
3918
3919         Make caches window show more info about non-jsobject GC values
3920         https://bugs.webkit.org/show_bug.cgi?id=57874
3921
3922         Add ClassInfo to the various internal JS types that currently
3923         don't have any, and make the text for caches window show the
3924         classname for non-JSObject instances.
3925
3926         * runtime/Executable.cpp:
3927         * runtime/Executable.h:
3928         (JSC::ExecutableBase::createStructure):
3929         (JSC::NativeExecutable::createStructure):
3930         (JSC::NativeExecutable::NativeExecutable):
3931         (JSC::EvalExecutable::createStructure):
3932         (JSC::ProgramExecutable::createStructure):
3933         (JSC::FunctionExecutable::createStructure):
3934         * runtime/Heap.cpp:
3935         (JSC::TypeCounter::typeName):
3936         * runtime/JSGlobalData.cpp:
3937         (JSC::JSGlobalData::JSGlobalData):
3938         * runtime/JSGlobalData.h:
3939         * runtime/ScopeChain.cpp:
3940         * runtime/ScopeChain.h:
3941         (JSC::ScopeChainNode::createStructure):
3942         * runtime/StructureChain.cpp:
3943         * runtime/StructureChain.h:
3944         (JSC::StructureChain::createStructure):
3945
3946 2011-04-05  Nikolas Zimmermann  <nzimmermann@rim.com>
3947
3948         Reviewed by Andreas Kling.
3949
3950         Cleanup StringConcatenate
3951         https://bugs.webkit.org/show_bug.cgi?id=57836
3952
3953         Don't use PassRefPtr in local variables, properly store in RefPtrs and release on return.
3954         Add a makeString() variant taking 9 arguments, needed by a follow-up patch.
3955
3956         * wtf/text/StringConcatenate.h:
3957         (WTF::tryMakeString):
3958         (WTF::makeString):
3959
3960 2011-04-04  Sheriff Bot  <webkit.review.bot@gmail.com>
3961
3962         Unreviewed, rolling out r82876.
3963         http://trac.webkit.org/changeset/82876
3964         https://bugs.webkit.org/show_bug.cgi?id=57816
3965
3966         Caused a lot of test crashes (Requested by tkent on #webkit).
3967
3968         * JavaScriptCore.exp:
3969         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
3970         * wtf/FastMalloc.cpp:
3971         (WTF::tryFastMalloc):
3972         (WTF::fastMalloc):
3973         (WTF::tryFastCalloc):
3974         (WTF::fastCalloc):
3975         (WTF::fastFree):
3976         (WTF::tryFastRealloc):
3977         (WTF::fastRealloc):
3978         (WTF::fastMallocSize):
3979         (WTF::TCMalloc_PageHeap::isScavengerSuspended):
3980         (WTF::TCMalloc_PageHeap::scheduleScavenger):
3981         (WTF::TCMalloc_PageHeap::suspendScavenger):
3982         (WTF::TCMalloc_PageHeap::signalScavenger):
3983         (WTF::TCMallocStats::malloc):
3984         (WTF::TCMallocStats::free):
3985         (WTF::TCMallocStats::fastCalloc):
3986         (WTF::TCMallocStats::tryFastCalloc):
3987         (WTF::TCMallocStats::calloc):
3988         (WTF::TCMallocStats::fastRealloc):
3989         (WTF::TCMallocStats::tryFastRealloc):
3990         (WTF::TCMallocStats::realloc):
3991         (WTF::TCMallocStats::fastMallocSize):
3992         * wtf/FastMalloc.h:
3993         (WTF::Internal::fastMallocMatchValidationType):
3994         (WTF::Internal::fastMallocMatchValidationValue):
3995         (WTF::Internal::setFastMallocMatchValidationType):
3996         (WTF::fastMallocMatchValidateFree):
3997         * wtf/Platform.h:
3998
3999 2011-04-04  Oliver Hunt  <oliver@apple.com>
4000
4001         Reviewed by Antti Koivisto.
4002
4003         Stop JSCell.h from including Structure.h
4004         https://bugs.webkit.org/show_bug.cgi?id=57809
4005
4006         * runtime/GetterSetter.h:
4007         * runtime/JSAPIValueWrapper.h:
4008         * runtime/JSCell.h:
4009         (JSC::JSCell::JSValue::toThisObject):
4010         * runtime/JSString.h:
4011         * runtime/ScopeChain.h:
4012         * runtime/Structure.h:
4013         (JSC::JSCell::isObject):
4014         (JSC::JSCell::isString):
4015         (JSC::JSCell::classInfo):
4016         (JSC::JSCell::createDummyStructure):
4017         (JSC::JSValue::needsThisConversion):
4018         (JSC::MarkStack::internalAppend):
4019         * runtime/StructureChain.h:
4020
4021 2011-04-04  Oliver Hunt  <oliver@apple.com>
4022
4023         Fix clang build.
4024
4025         * wtf/FastMalloc.cpp:
4026         (WTF::fastMalloc):
4027         (WTF::fastCalloc):
4028         (WTF::fastRealloc):
4029
4030 2011-04-04  Oliver Hunt  <oliver@apple.com>
4031
4032         Remove accidental change to Platform.h
4033
4034         * wtf/Platform.h:
4035
4036 2011-04-04  Geoffrey Garen  <ggaren@apple.com>
4037
4038         Reviewed by Oliver Hunt.
4039
4040         Fixed a weak-handle-related leak in RegisterFile
4041         https://bugs.webkit.org/show_bug.cgi?id=57793
4042
4043         * interpreter/RegisterFile.cpp: Nixed leaky GlobalObjectNotifier.
4044         * interpreter/RegisterFile.h:
4045         (JSC::RegisterFile::GlobalObjectOwner::finalize):
4046         (JSC::RegisterFile::RegisterFile): Replaced GlobalObjectNotifier with
4047         a per-RegisterFile weak handle owner, which does not leak.
4048
4049         * runtime/WeakGCPtr.h:
4050         (JSC::WeakGCPtr::set): Allow set() to take a context argument, since
4051         RegisterFile now needs this. (Seems like it was an accidental omission
4052         all along.)
4053
4054 2011-04-04  Oliver Hunt  <oliver@apple.com>
4055
4056         Reviewed by Geoffrey Garen.
4057
4058         Make malloc validation useful
4059         https://bugs.webkit.org/show_bug.cgi?id=57502
4060
4061         This patch changes FAST_MALLOC_MATCH_VALIDATION with a general
4062         corruption check that tags the beginning and end of all allocations
4063         to check for write overflows and overwrites the contents of
4064         memory on free in order to (hopefully) show up use-after-free issues
4065         sooner.
4066
4067         We also turn it on by default for debug builds.
4068
4069         * JavaScriptCore.exp:
4070         * wtf/FastMalloc.cpp:
4071         (WTF::tryFastMalloc):
4072         (WTF::fastMalloc):
4073         (WTF::tryFastCalloc):
4074         (WTF::fastCalloc):
4075         (WTF::fastFree):
4076         (WTF::tryFastRealloc):
4077         (WTF::fastRealloc):
4078         (WTF::TCMalloc_PageHeap::isScavengerSuspended):
4079         (WTF::TCMalloc_PageHeap::scheduleScavenger):
4080         (WTF::TCMalloc_PageHeap::suspendScavenger):
4081         (WTF::TCMalloc_PageHeap::signalScavenger):
4082         (WTF::TCMallocStats::malloc):
4083         (WTF::TCMallocStats::free):
4084         (WTF::TCMallocStats::fastCalloc):
4085         (WTF::TCMallocStats::tryFastCalloc):
4086         (WTF::TCMallocStats::calloc):
4087         (WTF::TCMallocStats::fastRealloc):
4088         (WTF::TCMallocStats::tryFastRealloc):
4089         (WTF::TCMallocStats::realloc):
4090         * wtf/FastMalloc.h:
4091         (WTF::Internal::fastMallocValidationHeader):
4092         (WTF::Internal::fastMallocValidationSuffix):
4093         (WTF::Internal::fastMallocMatchValidationType):
4094         (WTF::Internal::setFastMallocMatchValidationType):
4095         (WTF::fastMallocMatchValidateFree):
4096         (WTF::fastMallocValidate):
4097         * wtf/Platform.h: