6099d68b9fe41bf317a970b324dd99e552d5b01a
[WebKit-https.git] / JavaScriptCore / ChangeLog
1 2008-12-07  Oliver Hunt  <oliver@apple.com>
2
3         Reviewed by NOBODY (Build fix).
4
5         Add new files to other projects.
6
7         * GNUmakefile.am:
8         * JavaScriptCore.pri:
9         * JavaScriptCore.pro:
10
11 2008-12-07  Oliver Hunt  <oliver@apple.com>
12
13         Rubber stamped by Mark Rowe.
14
15         Rename ExecutableAllocatorMMAP to the more sensible ExecutableAllocatorPosix
16
17         * JavaScriptCore.xcodeproj/project.pbxproj:
18         * jit/ExecutableAllocator.h:
19         * jit/ExecutableAllocatorPosix.cpp: Renamed from JavaScriptCore/jit/ExecutableAllocatorMMAP.cpp.
20         (JSC::ExecutableAllocator::intializePageSize):
21         (JSC::ExecutablePool::systemAlloc):
22         (JSC::ExecutablePool::systemRelease):
23
24 2008-12-07  Oliver Hunt  <oliver@apple.com>
25
26         Reviewed by Cameron Zwarich and Sam Weinig
27
28         <rdar://problem/6309878> Need more granular control over allocation of executable memory (21783)
29         <https://bugs.webkit.org/show_bug.cgi?id=21783>
30
31         Add a new allocator for use by the JIT that provides executable pages, so
32         we can get rid of the current hack that makes the entire heap executable.
33
34         1-2% progression on SunSpider-v8, 1% on SunSpider.  Reduces memory usage as well!
35
36         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
37         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
38         * JavaScriptCore.xcodeproj/project.pbxproj:
39         * assembler/AssemblerBuffer.h:
40         (JSC::AssemblerBuffer::size):
41         (JSC::AssemblerBuffer::executableCopy):
42         * assembler/MacroAssembler.h:
43         (JSC::MacroAssembler::size):
44         (JSC::MacroAssembler::copyCode):
45         * assembler/X86Assembler.h:
46         (JSC::X86Assembler::size):
47         (JSC::X86Assembler::executableCopy):
48         * bytecode/CodeBlock.cpp:
49         (JSC::CodeBlock::~CodeBlock):
50         * bytecode/CodeBlock.h:
51         (JSC::CodeBlock::executablePool):
52         (JSC::CodeBlock::setExecutablePool):
53         * bytecode/Instruction.h:
54         (JSC::PolymorphicAccessStructureList::derefStructures):
55         * interpreter/Interpreter.cpp:
56         (JSC::Interpreter::~Interpreter):
57         * interpreter/Interpreter.h:
58         * jit/ExecutableAllocator.cpp: Added.
59         * jit/ExecutableAllocator.h: Added.
60         (JSC::ExecutablePool::create):
61         (JSC::ExecutablePool::alloc):
62         (JSC::ExecutablePool::~ExecutablePool):
63         (JSC::ExecutablePool::available):
64         (JSC::ExecutablePool::ExecutablePool):
65         (JSC::ExecutablePool::poolAllocate):
66         (JSC::ExecutableAllocator::ExecutableAllocator):
67         (JSC::ExecutableAllocator::poolForSize):
68         (JSC::ExecutablePool::sizeForAllocation):
69         * jit/ExecutableAllocatorMMAP.cpp: Added.
70         (JSC::ExecutableAllocator::intializePageSize):
71         (JSC::ExecutablePool::systemAlloc):
72         (JSC::ExecutablePool::systemRelease):
73         * jit/ExecutableAllocatorWin.cpp: Added.
74         (JSC::ExecutableAllocator::intializePageSize):
75         (JSC::ExecutablePool::systemAlloc):
76         (JSC::ExecutablePool::systemRelease):
77         * jit/JIT.cpp:
78         (JSC::JIT::privateCompile):
79         (JSC::JIT::privateCompileCTIMachineTrampolines):
80         * jit/JIT.h:
81         (JSC::JIT::compileCTIMachineTrampolines):
82         * jit/JITPropertyAccess.cpp:
83         (JSC::JIT::privateCompilePutByIdTransition):
84         (JSC::JIT::privateCompilePatchGetArrayLength):
85         (JSC::JIT::privateCompileGetByIdSelf):
86         (JSC::JIT::privateCompileGetByIdProto):
87         (JSC::JIT::privateCompileGetByIdSelfList):
88         (JSC::JIT::privateCompileGetByIdProtoList):
89         (JSC::JIT::privateCompileGetByIdChainList):
90         (JSC::JIT::privateCompileGetByIdChain):
91         (JSC::JIT::privateCompilePutByIdReplace):
92         * parser/Nodes.cpp:
93         (JSC::RegExpNode::emitBytecode):
94         * runtime/JSGlobalData.h:
95         (JSC::JSGlobalData::poolForSize):
96         * runtime/RegExp.cpp:
97         (JSC::RegExp::RegExp):
98         (JSC::RegExp::create):
99         (JSC::RegExp::~RegExp):
100         * runtime/RegExp.h:
101         * runtime/RegExpConstructor.cpp:
102         (JSC::constructRegExp):
103         * runtime/RegExpPrototype.cpp:
104         (JSC::regExpProtoFuncCompile):
105         * runtime/StringPrototype.cpp:
106         (JSC::stringProtoFuncMatch):
107         (JSC::stringProtoFuncSearch):
108         * wrec/WREC.cpp:
109         (JSC::WREC::Generator::compileRegExp):
110         * wrec/WRECGenerator.h:
111         * wtf/FastMalloc.cpp:
112         * wtf/FastMalloc.h:
113         * wtf/TCSystemAlloc.cpp:
114         (TryMmap):
115         (TryVirtualAlloc):
116         (TryDevMem):
117         (TCMalloc_SystemRelease):
118
119 2008-12-06  Sam Weinig  <sam@webkit.org>
120
121         Fix the Gtk build.
122
123         * jit/JITPropertyAccess.cpp:
124         (JSC::JIT::compileGetByIdHotPath):
125         (JSC::JIT::compilePutByIdHotPath):
126
127 2008-12-06  Sam Weinig  <sam@webkit.org>
128
129         Reviewed by Cameron Zwarich,
130
131         Move CodeBlock constructor into the .cpp file.
132
133         Sunspider reports a .7% progression, but I can only assume this
134         is noise.
135
136         * bytecode/CodeBlock.cpp:
137         (JSC::CodeBlock::CodeBlock):
138         * bytecode/CodeBlock.h:
139
140 2008-12-06  Sam Weinig  <sam@webkit.org>
141
142         Reviewed by Cameron Zwarich.
143
144         Split JumpTable code into its own file.
145
146         * GNUmakefile.am:
147         * JavaScriptCore.pri:
148         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
149         * JavaScriptCore.xcodeproj/project.pbxproj:
150         * JavaScriptCoreSources.bkl:
151         * bytecode/CodeBlock.cpp:
152         * bytecode/CodeBlock.h:
153         * bytecode/JumpTable.cpp: Copied from bytecode/CodeBlock.cpp.
154         * bytecode/JumpTable.h: Copied from bytecode/CodeBlock.h.
155
156 2008-12-05  Sam Weinig  <sam@webkit.org>
157
158         Reviewed by Cameron Zwarich.
159
160         Fix for https://bugs.webkit.org/show_bug.cgi?id=22715
161         Encapsulate more CodeBlock members in preparation
162         of moving some of them to a rare data structure.
163
164         * bytecode/CodeBlock.cpp:
165         (JSC::locationForOffset):
166         (JSC::printConditionalJump):
167         (JSC::printGetByIdOp):
168         (JSC::printPutByIdOp):
169         (JSC::CodeBlock::printStructure):
170         (JSC::CodeBlock::printStructures):
171         (JSC::CodeBlock::dump):
172         (JSC::CodeBlock::~CodeBlock):
173         (JSC::CodeBlock::unlinkCallers):
174         (JSC::CodeBlock::derefStructures):
175         (JSC::CodeBlock::refStructures):
176         (JSC::CodeBlock::mark):
177         (JSC::CodeBlock::getHandlerForVPC):
178         (JSC::CodeBlock::nativeExceptionCodeForHandlerVPC):
179         (JSC::CodeBlock::lineNumberForVPC):
180         (JSC::CodeBlock::expressionRangeForVPC):
181         (JSC::CodeBlock::shrinkToFit):
182         * bytecode/CodeBlock.h:
183         (JSC::CodeBlock::CodeBlock):
184         (JSC::CodeBlock::addCaller):
185         (JSC::CodeBlock::removeCaller):
186         (JSC::CodeBlock::isKnownNotImmediate):
187         (JSC::CodeBlock::isConstantRegisterIndex):
188         (JSC::CodeBlock::getConstant):
189         (JSC::CodeBlock::isTemporaryRegisterIndex):
190         (JSC::CodeBlock::getStubInfo):
191         (JSC::CodeBlock::getCallLinkInfo):
192         (JSC::CodeBlock::instructions):
193         (JSC::CodeBlock::setJITCode):
194         (JSC::CodeBlock::jitCode):
195         (JSC::CodeBlock::ownerNode):
196         (JSC::CodeBlock::setGlobalData):
197         (JSC::CodeBlock::setThisRegister):
198         (JSC::CodeBlock::thisRegister):
199         (JSC::CodeBlock::setNeedsFullScopeChain):
200         (JSC::CodeBlock::needsFullScopeChain):
201         (JSC::CodeBlock::setUsesEval):
202         (JSC::CodeBlock::usesEval):
203         (JSC::CodeBlock::setUsesArguments):
204         (JSC::CodeBlock::usesArguments):
205         (JSC::CodeBlock::codeType):
206         (JSC::CodeBlock::source):
207         (JSC::CodeBlock::sourceOffset):
208         (JSC::CodeBlock::addGlobalResolveInstruction):
209         (JSC::CodeBlock::numberOfPropertyAccessInstructions):
210         (JSC::CodeBlock::addPropertyAccessInstruction):
211         (JSC::CodeBlock::propertyAccessInstruction):
212         (JSC::CodeBlock::numberOfCallLinkInfos):
213         (JSC::CodeBlock::addCallLinkInfo):
214         (JSC::CodeBlock::callLinkInfo):
215         (JSC::CodeBlock::numberOfJumpTargets):
216         (JSC::CodeBlock::addJumpTarget):
217         (JSC::CodeBlock::jumpTarget):
218         (JSC::CodeBlock::lastJumpTarget):
219         (JSC::CodeBlock::numberOfExceptionHandlers):
220         (JSC::CodeBlock::addExceptionHandler):
221         (JSC::CodeBlock::exceptionHandler):
222         (JSC::CodeBlock::addExpressionInfo):
223         (JSC::CodeBlock::numberOfLineInfos):
224         (JSC::CodeBlock::addLineInfo):
225         (JSC::CodeBlock::lastLineInfo):
226         (JSC::CodeBlock::jitReturnAddressVPCMap):
227         (JSC::CodeBlock::numberOfIdentifiers):
228         (JSC::CodeBlock::addIdentifier):
229         (JSC::CodeBlock::identifier):
230         (JSC::CodeBlock::numberOfConstantRegisters):
231         (JSC::CodeBlock::addConstantRegister):
232         (JSC::CodeBlock::constantRegister):
233         (JSC::CodeBlock::addFunction):
234         (JSC::CodeBlock::function):
235         (JSC::CodeBlock::addFunctionExpression):
236         (JSC::CodeBlock::functionExpression):
237         (JSC::CodeBlock::addUnexpectedConstant):
238         (JSC::CodeBlock::unexpectedConstant):
239         (JSC::CodeBlock::addRegExp):
240         (JSC::CodeBlock::regexp):
241         (JSC::CodeBlock::symbolTable):
242         (JSC::CodeBlock::evalCodeCache):
243         New inline setters/getters.
244
245         (JSC::ProgramCodeBlock::ProgramCodeBlock):
246         (JSC::ProgramCodeBlock::~ProgramCodeBlock):
247         (JSC::ProgramCodeBlock::clearGlobalObject):
248         * bytecode/SamplingTool.cpp:
249         (JSC::ScopeSampleRecord::sample):
250         (JSC::SamplingTool::dump):
251         * bytecompiler/BytecodeGenerator.cpp:
252         * bytecompiler/BytecodeGenerator.h:
253         * bytecompiler/Label.h:
254         * interpreter/CallFrame.cpp:
255         * interpreter/Interpreter.cpp:
256         * jit/JIT.cpp:
257         * jit/JITCall.cpp:
258         * jit/JITInlineMethods.h:
259         * jit/JITPropertyAccess.cpp:
260         * parser/Nodes.cpp:
261         * runtime/Arguments.h:
262         * runtime/ExceptionHelpers.cpp:
263         * runtime/JSActivation.cpp:
264         * runtime/JSActivation.h:
265         * runtime/JSGlobalObject.cpp:
266         Change direct access to use new getter/setters.
267
268 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
269
270         Reviewed by Oliver Hunt.
271
272         Prevent GCC4.2 from hanging when trying to compile Interpreter.cpp.
273         Added "-fno-var-tracking" compiler flag.
274
275         https://bugs.webkit.org/show_bug.cgi?id=22704
276
277         * JavaScriptCore.xcodeproj/project.pbxproj:
278
279 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
280
281         Reviewed by Oliver Hunt.
282
283         Ordering of branch operands in MacroAssembler in unnecessarily  inconsistent.
284
285         je, jg etc take an immediate operand as the second argument, but for the
286         equality branches (je, jne) the immediate operand was the first argument.  This
287         was unnecessarily inconsistent.  Change je, jne methods to take the immediate
288         as the second argument.
289
290         https://bugs.webkit.org/show_bug.cgi?id=22703
291
292         * assembler/MacroAssembler.h:
293         (JSC::MacroAssembler::je32):
294         (JSC::MacroAssembler::jne32):
295         * jit/JIT.cpp:
296         (JSC::JIT::compileOpStrictEq):
297         * wrec/WRECGenerator.cpp:
298         (JSC::WREC::Generator::generateEnter):
299         (JSC::WREC::Generator::generateNonGreedyQuantifier):
300         (JSC::WREC::Generator::generateGreedyQuantifier):
301         (JSC::WREC::Generator::generatePatternCharacterPair):
302         (JSC::WREC::Generator::generatePatternCharacter):
303         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
304         (JSC::WREC::Generator::generateCharacterClassInverted):
305         (JSC::WREC::Generator::generateAssertionBOL):
306         (JSC::WREC::Generator::generateAssertionWordBoundary):
307
308 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
309
310         Reviewed by Geoff Garen.
311
312         Second tranche of porting JIT.cpp to MacroAssembler interface.
313
314         * assembler/MacroAssembler.h:
315         (JSC::MacroAssembler::mul32):
316         (JSC::MacroAssembler::jl32):
317         (JSC::MacroAssembler::jnzSub32):
318         (JSC::MacroAssembler::joAdd32):
319         (JSC::MacroAssembler::joMul32):
320         (JSC::MacroAssembler::jzSub32):
321         * jit/JIT.cpp:
322         (JSC::JIT::emitSlowScriptCheck):
323         (JSC::JIT::privateCompileMainPass):
324         (JSC::JIT::privateCompileSlowCases):
325         (JSC::JIT::privateCompileCTIMachineTrampolines):
326         * jit/JIT.h:
327         * jit/JITInlineMethods.h:
328         (JSC::JIT::emitJumpIfNotJSCell):
329         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
330
331 2008-12-05  David Kilzer  <ddkilzer@apple.com>
332
333         Bug 22609: Provide a build-time choice when generating hash tables for properties of built-in DOM objects
334
335         <https://bugs.webkit.org/show_bug.cgi?id=22609>
336         <rdar://problem/6331749>
337
338         Reviewed by Darin Adler.
339
340         Initial patch by Yosen Lin.  Adapted for ToT WebKit by David Kilzer.
341
342         Added back the code that generates a "compact" hash (instead of a
343         perfect hash) as a build-time option using the
344         ENABLE(PERFECT_HASH_SIZE) macro as defined in Lookup.h.
345
346         * create_hash_table: Rename variables to differentiate perfect hash
347         values from compact hash values.  Added back code to compute compact
348         hash tables.  Generate both hash table sizes and emit
349         conditionalized code based on ENABLE(PERFECT_HASH_SIZE).
350         * runtime/Lookup.cpp:
351         (JSC::HashTable::createTable): Added version of createTable() for
352         use with compact hash tables.
353         (JSC::HashTable::deleteTable): Updated to work with compact hash
354         tables.
355         * runtime/Lookup.h: Defined ENABLE(PERFECT_HASH_SIZE) macro here.
356         (JSC::HashEntry::initialize): Set m_next to zero when using compact
357         hash tables.
358         (JSC::HashEntry::setNext): Added for compact hash tables.
359         (JSC::HashEntry::next): Added for compact hash tables.
360         (JSC::HashTable::entry): Added version of entry() for use with
361         compact hash tables.
362         * runtime/Structure.cpp:
363         (JSC::Structure::getEnumerablePropertyNames): Updated to work with
364         compact hash tables.
365
366 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
367
368         Reviewed by Geoff Garen.
369
370         Remove redundant calls to JIT::emitSlowScriptCheck.
371         This is checked in the hot path, so is not needed on the slow path - and the code
372         was being planted before the start of the slow case, so was completely unreachable!
373
374         * jit/JIT.cpp:
375         (JSC::JIT::privateCompileSlowCases):
376
377 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
378
379         Reviewed by Geoff Garen.
380
381         Move JIT::compileOpStrictEq to MacroAssembler interface.
382
383         The rewrite also looks like a small (<1%) performance progression.
384
385         https://bugs.webkit.org/show_bug.cgi?id=22697
386
387         * jit/JIT.cpp:
388         (JSC::JIT::compileOpStrictEq):
389         (JSC::JIT::privateCompileSlowCases):
390         * jit/JIT.h:
391         * jit/JITInlineMethods.h:
392         (JSC::JIT::emitJumpIfJSCell):
393         (JSC::JIT::emitJumpSlowCaseIfJSCell):
394
395 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
396
397         Reviewed by Geoff Garen.
398
399         Remove m_assembler from MacroAssembler::Jump.
400         Keeping a pointer allowed for some syntactic sugar - "link()" looks nicer
401         than "link(this)".  But maintaining this doubles the size of Jump, which
402         is even more unfortunate for the JIT, since there are many large structures
403         holding JmpSrcs.  Probably best to remove it.
404
405         https://bugs.webkit.org/show_bug.cgi?id=22693
406
407         * assembler/MacroAssembler.h:
408         (JSC::MacroAssembler::Jump::Jump):
409         (JSC::MacroAssembler::Jump::link):
410         (JSC::MacroAssembler::Jump::linkTo):
411         (JSC::MacroAssembler::JumpList::link):
412         (JSC::MacroAssembler::JumpList::linkTo):
413         (JSC::MacroAssembler::jae32):
414         (JSC::MacroAssembler::je32):
415         (JSC::MacroAssembler::je16):
416         (JSC::MacroAssembler::jg32):
417         (JSC::MacroAssembler::jge32):
418         (JSC::MacroAssembler::jl32):
419         (JSC::MacroAssembler::jle32):
420         (JSC::MacroAssembler::jnePtr):
421         (JSC::MacroAssembler::jne32):
422         (JSC::MacroAssembler::jnset32):
423         (JSC::MacroAssembler::jset32):
424         (JSC::MacroAssembler::jump):
425         (JSC::MacroAssembler::jzSub32):
426         (JSC::MacroAssembler::joAdd32):
427         (JSC::MacroAssembler::call):
428         * wrec/WREC.cpp:
429         (JSC::WREC::Generator::compileRegExp):
430         * wrec/WRECGenerator.cpp:
431         (JSC::WREC::Generator::generateEnter):
432         (JSC::WREC::Generator::generateBackreferenceQuantifier):
433         (JSC::WREC::Generator::generateNonGreedyQuantifier):
434         (JSC::WREC::Generator::generateGreedyQuantifier):
435         (JSC::WREC::Generator::generatePatternCharacter):
436         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
437         (JSC::WREC::Generator::generateCharacterClassInverted):
438         (JSC::WREC::Generator::generateCharacterClass):
439         (JSC::WREC::Generator::generateParenthesesAssertion):
440         (JSC::WREC::Generator::generateParenthesesInvertedAssertion):
441         (JSC::WREC::Generator::generateParenthesesNonGreedy):
442         (JSC::WREC::Generator::generateParenthesesResetTrampoline):
443         (JSC::WREC::Generator::generateAssertionBOL):
444         (JSC::WREC::Generator::generateAssertionEOL):
445         (JSC::WREC::Generator::generateAssertionWordBoundary):
446         (JSC::WREC::Generator::generateBackreference):
447         (JSC::WREC::Generator::terminateAlternative):
448         (JSC::WREC::Generator::terminateDisjunction):
449         * wrec/WRECParser.h:
450
451 2008-12-05  Gavin Barraclough  <barraclough@apple.com>
452
453         Reviewed by Geoffrey Garen.
454
455         Simplify JIT generated checks for timeout code, by moving more work into the C function.
456         https://bugs.webkit.org/show_bug.cgi?id=22688
457
458         * interpreter/Interpreter.cpp:
459         (JSC::Interpreter::cti_timeout_check):
460         * interpreter/Interpreter.h:
461         * jit/JIT.cpp:
462         (JSC::JIT::emitSlowScriptCheck):
463
464 2008-12-05  Sam Weinig  <sam@webkit.org>
465
466         Reviewed by Geoffrey Garen.
467
468         Encapsulate access to jump tables in the CodeBlock in preparation
469         of moving them to a rare data structure.
470
471         * bytecode/CodeBlock.cpp:
472         (JSC::CodeBlock::dump):
473         (JSC::CodeBlock::shrinkToFit):
474         * bytecode/CodeBlock.h:
475         (JSC::CodeBlock::numberOfImmediateSwitchJumpTables):
476         (JSC::CodeBlock::addImmediateSwitchJumpTable):
477         (JSC::CodeBlock::immediateSwitchJumpTable):
478         (JSC::CodeBlock::numberOfCharacterSwitchJumpTables):
479         (JSC::CodeBlock::addCharacterSwitchJumpTable):
480         (JSC::CodeBlock::characterSwitchJumpTable):
481         (JSC::CodeBlock::numberOfStringSwitchJumpTables):
482         (JSC::CodeBlock::addStringSwitchJumpTable):
483         (JSC::CodeBlock::stringSwitchJumpTable):
484         * bytecompiler/BytecodeGenerator.cpp:
485         (JSC::BytecodeGenerator::generate):
486         (JSC::BytecodeGenerator::endSwitch):
487         * interpreter/Interpreter.cpp:
488         (JSC::Interpreter::privateExecute):
489         (JSC::Interpreter::cti_op_switch_imm):
490         (JSC::Interpreter::cti_op_switch_char):
491         (JSC::Interpreter::cti_op_switch_string):
492         * jit/JIT.cpp:
493         (JSC::JIT::privateCompileMainPass):
494
495 2008-12-05  Adam Roben  <aroben@apple.com>
496
497         Windows build fix after r39020
498
499         * jit/JITInlineMethods.h:
500         (JSC::JIT::restoreArgumentReference):
501         (JSC::JIT::restoreArgumentReferenceForTrampoline):
502         Add some apparently-missing __.
503
504 2008-12-04  Geoffrey Garen  <ggaren@apple.com>
505
506         Reviewed by Darin Adler.
507         
508         https://bugs.webkit.org/show_bug.cgi?id=22673
509         
510         Added support for the assertion (?=) and inverted assertion (?!) atoms
511         in WREC.
512
513         * wrec/WRECGenerator.cpp:
514         (JSC::WREC::Generator::generateParenthesesAssertion):
515         (JSC::WREC::Generator::generateParenthesesInvertedAssertion): Split the
516         old (unused) generateParentheses into these two functions, with more
517         limited capabilities.
518         
519         * wrec/WRECGenerator.h:
520         (JSC::WREC::Generator::): Moved an enum to the top of the class definition,
521         to match the WebKit style, and removed a defunct comment.
522
523         * wrec/WRECParser.cpp:
524         (JSC::WREC::Parser::parseParentheses):
525         (JSC::WREC::Parser::consumeParenthesesType):
526         * wrec/WRECParser.h:
527         (JSC::WREC::Parser::): Added support for parsing (?=) and (?!).
528
529 2008-12-05  Simon Hausmann  <simon.hausmann@nokia.com>
530
531         Rubber-stamped by Tor Arne Vestbø.
532
533         Disable the JIT for the Qt build alltogether again, after observing
534         more miscompilations in a wider range of newer gcc versions.
535
536         * JavaScriptCore.pri:
537
538 2008-12-05  Simon Hausmann  <simon.hausmann@nokia.com>
539
540         Reviewed by Tor Arne Vestbø.
541
542         Disable the JIT for the Qt build on Linux unless gcc is >= 4.2,
543         due to miscompilations.
544
545         * JavaScriptCore.pri:
546
547 2008-12-04  Gavin Barraclough  <barraclough@apple.com>
548
549         Reviewed by Geoff Garen.
550
551         Start porting the JIT to use the MacroAssembler.
552
553         https://bugs.webkit.org/show_bug.cgi?id=22671
554         No change in performance.
555
556         * assembler/MacroAssembler.h:
557         (JSC::MacroAssembler::Jump::operator X86Assembler::JmpSrc):
558         (JSC::MacroAssembler::add32):
559         (JSC::MacroAssembler::and32):
560         (JSC::MacroAssembler::lshift32):
561         (JSC::MacroAssembler::rshift32):
562         (JSC::MacroAssembler::storePtr):
563         (JSC::MacroAssembler::store32):
564         (JSC::MacroAssembler::poke):
565         (JSC::MacroAssembler::move):
566         (JSC::MacroAssembler::compareImm32ForBranchEquality):
567         (JSC::MacroAssembler::jnePtr):
568         (JSC::MacroAssembler::jnset32):
569         (JSC::MacroAssembler::jset32):
570         (JSC::MacroAssembler::jzeroSub32):
571         (JSC::MacroAssembler::joverAdd32):
572         (JSC::MacroAssembler::call):
573         * assembler/X86Assembler.h:
574         (JSC::X86Assembler::shll_i8r):
575         * jit/JIT.cpp:
576         (JSC::JIT::privateCompileMainPass):
577         (JSC::JIT::privateCompile):
578         (JSC::JIT::privateCompileCTIMachineTrampolines):
579         * jit/JIT.h:
580         * jit/JITArithmetic.cpp:
581         (JSC::JIT::compileBinaryArithOp):
582         * jit/JITInlineMethods.h:
583         (JSC::JIT::emitGetVirtualRegister):
584         (JSC::JIT::emitPutCTIArg):
585         (JSC::JIT::emitPutCTIArgConstant):
586         (JSC::JIT::emitGetCTIArg):
587         (JSC::JIT::emitPutCTIArgFromVirtualRegister):
588         (JSC::JIT::emitPutCTIParam):
589         (JSC::JIT::emitGetCTIParam):
590         (JSC::JIT::emitPutToCallFrameHeader):
591         (JSC::JIT::emitPutImmediateToCallFrameHeader):
592         (JSC::JIT::emitGetFromCallFrameHeader):
593         (JSC::JIT::emitPutVirtualRegister):
594         (JSC::JIT::emitInitRegister):
595         (JSC::JIT::emitNakedCall):
596         (JSC::JIT::restoreArgumentReference):
597         (JSC::JIT::restoreArgumentReferenceForTrampoline):
598         (JSC::JIT::emitCTICall):
599         (JSC::JIT::checkStructure):
600         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
601         (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
602         (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
603         (JSC::JIT::emitFastArithDeTagImmediate):
604         (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
605         (JSC::JIT::emitFastArithReTagImmediate):
606         (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
607         (JSC::JIT::emitFastArithImmToInt):
608         (JSC::JIT::emitFastArithIntToImmOrSlowCase):
609         (JSC::JIT::emitFastArithIntToImmNoCheck):
610         (JSC::JIT::emitTagAsBoolImmediate):
611         * jit/JITPropertyAccess.cpp:
612         (JSC::JIT::privateCompilePutByIdTransition):
613
614 2008-12-04  Geoffrey Garen  <ggaren@apple.com>
615
616         Reviewed by Oliver Hunt.
617         
618         Some refactoring for generateGreedyQuantifier.
619         
620         SunSpider reports no change (possibly a 0.3% speedup).
621
622         * wrec/WRECGenerator.cpp:
623         (JSC::WREC::Generator::generateGreedyQuantifier): Clarified label
624         meanings and unified some logic to simplify things.
625
626         * wrec/WRECParser.h:
627         (JSC::WREC::Parser::parseAlternative): Added a version of parseAlternative
628         that can jump to a Label, instead of a JumpList, upon failure. (Eventually,
629         when we have a true Label class, this will be redundant.) This makes
630         things easier for generateGreedyQuantifier, because it can avoid
631         explicitly linking things.
632
633 2008-12-04  Simon Hausmann  <simon.hausmann@nokia.com>
634
635         Reviewed by Holger Freyther.
636
637         Fix crashes in the Qt build on Linux/i386 with non-executable memory
638         by enabling TCSystemAlloc and the PROT_EXEC flag for mmap.
639
640         * JavaScriptCore.pri: Enable the use of TCSystemAlloc if the JIT is
641         enabled.
642         * wtf/TCSystemAlloc.cpp: Extend the PROT_EXEC permissions to
643         PLATFORM(QT).
644
645 2008-12-04  Simon Hausmann  <simon.hausmann@nokia.com>
646
647         Reviewed by Tor Arne Vestbø.
648
649         Enable ENABLE_JIT_OPTIMIZE_CALL, ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS
650         and ENABLE_JIT_OPTIMIZE_ARITHMETIC, as suggested by Niko.
651
652         * JavaScriptCore.pri: 
653
654 2008-12-04  Kent Hansen  <khansen@trolltech.com>
655
656         Reviewed by Simon Hausmann.
657
658         Enable the JSC jit for the Qt build by default for release builds on
659         linux-g++ and win32-msvc.
660
661         * JavaScriptCore.pri:
662
663 2008-12-04  Gavin Barraclough  <barraclough@apple.com>
664
665         Reviewed by Oliver Hunt.
666
667         Allow JIT to function without property access repatching and arithmetic optimizations.
668         Controlled by ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS and ENABLE_JIT_OPTIMIZE_ARITHMETIC switches.
669
670         https://bugs.webkit.org/show_bug.cgi?id=22643
671
672         * JavaScriptCore.xcodeproj/project.pbxproj:
673         * jit/JIT.cpp:
674         (JSC::JIT::privateCompileMainPass):
675         (JSC::JIT::privateCompileSlowCases):
676         * jit/JIT.h:
677         * jit/JITArithmetic.cpp: Copied from jit/JIT.cpp.
678         (JSC::JIT::compileBinaryArithOp):
679         (JSC::JIT::compileBinaryArithOpSlowCase):
680         * jit/JITPropertyAccess.cpp: Copied from jit/JIT.cpp.
681         (JSC::JIT::compileGetByIdHotPath):
682         (JSC::JIT::compileGetByIdSlowCase):
683         (JSC::JIT::compilePutByIdHotPath):
684         (JSC::JIT::compilePutByIdSlowCase):
685         (JSC::resizePropertyStorage):
686         (JSC::transitionWillNeedStorageRealloc):
687         (JSC::JIT::privateCompilePutByIdTransition):
688         (JSC::JIT::patchGetByIdSelf):
689         (JSC::JIT::patchPutByIdReplace):
690         (JSC::JIT::privateCompilePatchGetArrayLength):
691         * wtf/Platform.h:
692
693 2008-12-03  Geoffrey Garen  <ggaren@apple.com>
694
695         Reviewed by Oliver Hunt.
696         
697         Optimized sequences of characters in regular expressions by comparing
698         two characters at a time.
699         
700         1-2% speedup on SunSpider, 19-25% speedup on regexp-dna.
701
702         * assembler/MacroAssembler.h:
703         (JSC::MacroAssembler::load32):
704         (JSC::MacroAssembler::jge32): Filled out a few more macro methods.
705
706         * assembler/X86Assembler.h:
707         (JSC::X86Assembler::movl_mr): Added a verion of movl_mr that operates
708         without an offset, to allow the macro assembler to optmize for that case.
709         
710         * wrec/WREC.cpp:
711         (JSC::WREC::Generator::compileRegExp): Test the saved value of index
712         instead of the index register when checking for "end of input." The
713         index register doesn't increment by 1 in an orderly fashion, so testing
714         it for == "end of input" is not valid.
715         
716         Also, jump all the way to "return failure" upon reaching "end of input,"
717         instead of executing the next alternative. This is more logical, and
718         it's a slight optimization in the case of an expression with many alternatives.
719
720         * wrec/WRECGenerator.cpp:
721         (JSC::WREC::Generator::generateIncrementIndex): Added support for
722         jumping to a failure label in the case where the index has reached "end
723         of input."
724
725         (JSC::WREC::Generator::generatePatternCharacterSequence):
726         (JSC::WREC::Generator::generatePatternCharacterPair): This is the
727         optmization. It's basically like generatePatternCharacter, but it runs two
728         characters at a time.
729         
730         (JSC::WREC::Generator::generatePatternCharacter): Changed to use isASCII,
731         since it's clearer than comparing to a magic hex value.
732         
733         * wrec/WRECGenerator.h:
734
735 2008-12-03  Gavin Barraclough  <barraclough@apple.com>
736
737         Reviewed by Camron Zwarich.
738
739         Allow JIT to operate without the call-repatching optimization.
740         Controlled by ENABLE(JIT_OPTIMIZE_CALL), defaults on, disabling
741         this leads to significant performance regression.
742
743         https://bugs.webkit.org/show_bug.cgi?id=22639
744
745         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
746         * JavaScriptCore.xcodeproj/project.pbxproj:
747         * jit/JIT.cpp:
748         (JSC::JIT::privateCompileSlowCases):
749         * jit/JIT.h:
750         * jit/JITCall.cpp: Copied from jit/JIT.cpp.
751         (JSC::JIT::compileOpCallInitializeCallFrame):
752         (JSC::JIT::compileOpCallSetupArgs):
753         (JSC::JIT::compileOpCallEvalSetupArgs):
754         (JSC::JIT::compileOpConstructSetupArgs):
755         (JSC::JIT::compileOpCall):
756         (JSC::JIT::compileOpCallSlowCase):
757         (JSC::unreachable):
758         * jit/JITInlineMethods.h: Copied from jit/JIT.cpp.
759         (JSC::JIT::checkStructure):
760         (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
761         (JSC::JIT::emitTagAsBoolImmediate):
762         * wtf/Platform.h:
763
764 2008-12-03  Eric Seidel  <eric@webkit.org>
765
766         Rubber-stamped by David Hyatt.
767
768         Make HAVE_ACCESSIBILITY only define if !defined
769
770         * wtf/Platform.h:
771
772 2008-12-03  Sam Weinig  <sam@webkit.org>
773
774         Fix build.
775
776         * assembler/X86Assembler.h:
777         (JSC::X86Assembler::orl_i32r):
778
779 2008-12-03  Sam Weinig  <sam@webkit.org>
780
781         Reviewed by Geoffrey Garen.
782
783         Remove shared AssemblerBuffer 1MB buffer and instead give AssemblerBuffer
784         an 256 byte inline capacity.
785
786         1% progression on Sunspider.
787
788         * assembler/AssemblerBuffer.h:
789         (JSC::AssemblerBuffer::AssemblerBuffer):
790         (JSC::AssemblerBuffer::~AssemblerBuffer):
791         (JSC::AssemblerBuffer::grow):
792         * assembler/MacroAssembler.h:
793         (JSC::MacroAssembler::MacroAssembler):
794         * assembler/X86Assembler.h:
795         (JSC::X86Assembler::X86Assembler):
796         * interpreter/Interpreter.cpp:
797         (JSC::Interpreter::Interpreter):
798         * interpreter/Interpreter.h:
799         * jit/JIT.cpp:
800         (JSC::JIT::JIT):
801         * parser/Nodes.cpp:
802         (JSC::RegExpNode::emitBytecode):
803         * runtime/RegExp.cpp:
804         (JSC::RegExp::RegExp):
805         (JSC::RegExp::create):
806         * runtime/RegExp.h:
807         * runtime/RegExpConstructor.cpp:
808         (JSC::constructRegExp):
809         * runtime/RegExpPrototype.cpp:
810         (JSC::regExpProtoFuncCompile):
811         * runtime/StringPrototype.cpp:
812         (JSC::stringProtoFuncMatch):
813         (JSC::stringProtoFuncSearch):
814         * wrec/WREC.cpp:
815         (JSC::WREC::Generator::compileRegExp):
816         * wrec/WRECGenerator.h:
817         (JSC::WREC::Generator::Generator):
818         * wrec/WRECParser.h:
819         (JSC::WREC::Parser::Parser):
820
821 2008-12-03  Geoffrey Garen  <ggaren@apple.com>
822
823         Reviewed by Oliver Hunt, with help from Gavin Barraclough.
824         
825         orl_i32r was actually coded as an 8bit OR. So, I renamed orl_i32r to
826         orl_i8r, changed all orl_i32r clients to use orl_i8r, and then added
827         a new orl_i32r that actually does a 32bit OR.
828         
829         (32bit OR is currently unused, but a patch I'm working on uses it.)
830
831         * assembler/MacroAssembler.h:
832         (JSC::MacroAssembler::or32): Updated to choose between 8bit and 32bit OR.
833
834         * assembler/X86Assembler.h:
835         (JSC::X86Assembler::orl_i8r): The old orl_i32r.
836         (JSC::X86Assembler::orl_i32r): The new orl_i32r.
837         
838         * jit/JIT.cpp:
839         (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
840         (JSC::JIT::emitTagAsBoolImmediate): Use orl_i8r, since we're ORing 8bit
841         values.
842
843 2008-12-03  Dean Jackson  <dino@apple.com>
844
845         Reviewed by Dan Bernstein.
846
847         Helper functions for turn -> degrees.
848         https://bugs.webkit.org/show_bug.cgi?id=22497
849
850         * wtf/MathExtras.h:
851         (turn2deg):
852         (deg2turn):
853
854 2008-12-02  Cameron Zwarich  <zwarich@apple.com>
855
856         Reviewed by Geoff Garen.
857
858         Bug 22504: Crashes during code generation occur due to refing of ignoredResult()
859         <https://bugs.webkit.org/show_bug.cgi?id=22504>
860
861         Since ignoredResult() was implemented by casting 1 to a RegisterID*, any
862         attempt to ref ignoredResult() results in a crash. This will occur in
863         code generation of a function body where a node emits another node with
864         the dst that was passed to it, and then refs the returned RegisterID*.
865
866         To fix this problem, make ignoredResult() a member function of
867         BytecodeGenerator that simply returns a pointe to a fixed RegisterID
868         member of BytecodeGenerator.
869
870         * bytecompiler/BytecodeGenerator.h:
871         (JSC::BytecodeGenerator::ignoredResult):
872         * bytecompiler/RegisterID.h:
873         * parser/Nodes.cpp:
874         (JSC::NullNode::emitBytecode):
875         (JSC::BooleanNode::emitBytecode):
876         (JSC::NumberNode::emitBytecode):
877         (JSC::StringNode::emitBytecode):
878         (JSC::RegExpNode::emitBytecode):
879         (JSC::ThisNode::emitBytecode):
880         (JSC::ResolveNode::emitBytecode):
881         (JSC::ObjectLiteralNode::emitBytecode):
882         (JSC::PostfixResolveNode::emitBytecode):
883         (JSC::PostfixBracketNode::emitBytecode):
884         (JSC::PostfixDotNode::emitBytecode):
885         (JSC::DeleteValueNode::emitBytecode):
886         (JSC::VoidNode::emitBytecode):
887         (JSC::TypeOfResolveNode::emitBytecode):
888         (JSC::TypeOfValueNode::emitBytecode):
889         (JSC::PrefixResolveNode::emitBytecode):
890         (JSC::AssignResolveNode::emitBytecode):
891         (JSC::CommaNode::emitBytecode):
892         (JSC::ForNode::emitBytecode):
893         (JSC::ForInNode::emitBytecode):
894         (JSC::ReturnNode::emitBytecode):
895         (JSC::ThrowNode::emitBytecode):
896         (JSC::FunctionBodyNode::emitBytecode):
897         (JSC::FuncDeclNode::emitBytecode):
898
899 2008-12-02  Geoffrey Garen  <ggaren@apple.com>
900
901         Reviewed by Cameron Zwarich.
902         
903         Fixed https://bugs.webkit.org/show_bug.cgi?id=22537
904         REGRESSION (r38745): Assertion failure in jsSubstring() at ge.com
905
906         The bug was that index would become greater than length, so our
907         "end of input" checks, which all check "index == length", would fail.
908         
909         The solution is to check for end of input before incrementing index,
910         to ensure that index is always <= length.
911         
912         As a side benefit, generateJumpIfEndOfInput can now use je instead of
913         jg, which should be slightly faster.
914
915         * wrec/WREC.cpp:
916         (JSC::WREC::Generator::compileRegExp):
917         * wrec/WRECGenerator.cpp:
918         (JSC::WREC::Generator::generateJumpIfEndOfInput):
919
920 2008-12-02  Gavin Barraclough  <barraclough@apple.com>
921
922         Reviewed by Geoffrey Garen.
923
924         Plant shift right immediate instructions, which are awesome.
925         https://bugs.webkit.org/show_bug.cgi?id=22610
926         ~5% on the v8-crypto test.
927
928         * jit/JIT.cpp:
929         (JSC::JIT::privateCompileMainPass):
930         (JSC::JIT::privateCompileSlowCases):
931
932 2008-12-02  Geoffrey Garen  <ggaren@apple.com>
933
934         Reviewed by Sam Weinig.
935         
936         Cleaned up SegmentedVector by abstracting segment access into helper
937         functions.
938         
939         SunSpider reports no change.
940
941         * bytecompiler/SegmentedVector.h:
942         (JSC::SegmentedVector::SegmentedVector):
943         (JSC::SegmentedVector::~SegmentedVector):
944         (JSC::SegmentedVector::size):
945         (JSC::SegmentedVector::at):
946         (JSC::SegmentedVector::operator[]):
947         (JSC::SegmentedVector::last):
948         (JSC::SegmentedVector::append):
949         (JSC::SegmentedVector::removeLast):
950         (JSC::SegmentedVector::grow):
951         (JSC::SegmentedVector::clear):
952         (JSC::SegmentedVector::deleteAllSegments):
953         (JSC::SegmentedVector::segmentFor):
954         (JSC::SegmentedVector::subscriptFor):
955         (JSC::SegmentedVector::ensureSegmentsFor):
956         (JSC::SegmentedVector::ensureSegment):
957
958 2008-12-02  Geoffrey Garen  <ggaren@apple.com>
959
960         Reviewed by Geoffrey Garen. (Patch by Cameron Zwarich <zwarich@apple.com>.)
961         
962         Fixed https://bugs.webkit.org/show_bug.cgi?id=22482
963         REGRESSION (r37991): Occasionally see "Scene rendered incorrectly"
964         message when running the V8 Raytrace benchmark
965         
966         Rolled out r37991. It didn't properly save xmm0, which is caller-save,
967         before calling helper functions.
968         
969         SunSpider and v8 benchmarks show little change -- possibly a .2%
970         SunSpider regression, possibly a .2% v8 benchmark speedup.
971
972         * assembler/X86Assembler.h:
973         (JSC::X86Assembler::):
974         * bytecode/CodeBlock.cpp:
975         (JSC::CodeBlock::dump):
976         * bytecode/Instruction.h:
977         (JSC::Instruction::):
978         * bytecompiler/BytecodeGenerator.cpp:
979         (JSC::BytecodeGenerator::emitUnaryOp):
980         * bytecompiler/BytecodeGenerator.h:
981         (JSC::BytecodeGenerator::emitToJSNumber):
982         (JSC::BytecodeGenerator::emitTypeOf):
983         (JSC::BytecodeGenerator::emitGetPropertyNames):
984         * interpreter/Interpreter.cpp:
985         (JSC::Interpreter::privateExecute):
986         * interpreter/Interpreter.h:
987         * jit/JIT.cpp:
988         (JSC::JIT::privateCompileMainPass):
989         (JSC::JIT::privateCompileSlowCases):
990         * jit/JIT.h:
991         * parser/Nodes.cpp:
992         (JSC::UnaryOpNode::emitBytecode):
993         (JSC::BinaryOpNode::emitBytecode):
994         (JSC::EqualNode::emitBytecode):
995         * parser/ResultType.h:
996         (JSC::ResultType::isReusable):
997         (JSC::ResultType::mightBeNumber):
998         * runtime/JSNumberCell.h:
999
1000 2008-12-01  Gavin Barraclough  <barraclough@apple.com>
1001
1002         Reviewed by Geoffrey Garen.
1003
1004         Remove unused (sampling only, and derivable) argument to JIT::emitCTICall.
1005         https://bugs.webkit.org/show_bug.cgi?id=22587
1006
1007         * jit/JIT.cpp:
1008         (JSC::JIT::emitCTICall):
1009         (JSC::JIT::compileOpCall):
1010         (JSC::JIT::emitSlowScriptCheck):
1011         (JSC::JIT::compileBinaryArithOpSlowCase):
1012         (JSC::JIT::privateCompileMainPass):
1013         (JSC::JIT::privateCompileSlowCases):
1014         (JSC::JIT::privateCompile):
1015         * jit/JIT.h:
1016
1017 2008-12-02  Dimitri Glazkov  <dglazkov@chromium.org>
1018
1019         Reviewed by Eric Seidel.
1020         
1021         Fix the inheritance chain for JSFunction.
1022
1023         * runtime/JSFunction.cpp:
1024         (JSC::JSFunction::info): Add InternalFunction::info as parent class
1025
1026 2008-12-02  Simon Hausmann  <hausmann@webkit.org>
1027
1028         Reviewed by Tor Arne Vestbø.
1029
1030         Fix ability to include JavaScriptCore.pri from other .pro files.
1031
1032         * JavaScriptCore.pri: Moved -O3 setting into the .pro files.
1033         * JavaScriptCore.pro:
1034         * jsc.pro:
1035
1036 2008-12-01  Geoffrey Garen  <ggaren@apple.com>
1037
1038         Reviewed by Cameron Zwarich, with help from Gavin Barraclough.
1039         
1040         Fixed https://bugs.webkit.org/show_bug.cgi?id=22583.
1041
1042         Refactored regular expression parsing to parse sequences of characters
1043         as a single unit, in preparation for optimizing sequences of characters.
1044         
1045         SunSpider reports no change.
1046
1047         * JavaScriptCore.xcodeproj/project.pbxproj:
1048         * wrec/Escapes.h: Added. Set of classes for representing an escaped
1049         token in a pattern.
1050
1051         * wrec/Quantifier.h:
1052         (JSC::WREC::Quantifier::Quantifier): Simplified this constructor slightly,
1053         to match the new Escape constructor.
1054
1055         * wrec/WRECGenerator.cpp:
1056         (JSC::WREC::Generator::generatePatternCharacterSequence):
1057         * wrec/WRECGenerator.h: Added an interface for generating a sequence
1058         of pattern characters at a time. It doesn't do anything special yet.
1059
1060         * wrec/WRECParser.cpp:
1061         (JSC::WREC::Parser::consumeGreedyQuantifier):
1062         (JSC::WREC::Parser::consumeQuantifier): Renamed "parse" to "consume" in
1063         these functions, to match "consumeEscape."
1064
1065         (JSC::WREC::Parser::parsePatternCharacterSequence): New function for
1066         iteratively aggregating a sequence of characters in a pattern.
1067
1068         (JSC::WREC::Parser::parseCharacterClassQuantifier):
1069         (JSC::WREC::Parser::parseBackreferenceQuantifier): Renamed "parse" to
1070         "consume" in these functions, to match "consumeEscape."
1071
1072         (JSC::WREC::Parser::parseCharacterClass): Refactored to use the common
1073         escape processing code in consumeEscape.
1074
1075         (JSC::WREC::Parser::parseEscape): Refactored to use the common
1076         escape processing code in consumeEscape.
1077
1078         (JSC::WREC::Parser::consumeEscape): Factored escaped token processing
1079         into a common function, since we were doing this in a few places.
1080
1081         (JSC::WREC::Parser::parseTerm): Refactored to use the common
1082         escape processing code in consumeEscape.
1083
1084         * wrec/WRECParser.h:
1085         (JSC::WREC::Parser::consumeOctal): Refactored to use a helper function
1086         for reading a digit.
1087
1088 2008-12-01  Cameron Zwarich  <zwarich@apple.com>
1089
1090         Reviewed by Oliver Hunt.
1091
1092         Bug 20340: SegmentedVector segment allocations can lead to unsafe use of temporary registers
1093         <https://bugs.webkit.org/show_bug.cgi?id=20340>
1094
1095         SegmentedVector currently frees segments and reallocates them when used
1096         as a stack. This can lead to unsafe use of pointers into freed segments.
1097
1098         In order to fix this problem, SegmentedVector will be changed to only
1099         grow and never shrink. Also, rename the reserveCapacity() member
1100         function to grow() to match the actual usage in BytecodeGenerator, where
1101         this function is used to allocate a group of registers at once, rather
1102         than merely saving space for them.
1103
1104         * bytecompiler/BytecodeGenerator.cpp:
1105         (JSC::BytecodeGenerator::BytecodeGenerator): Use grow() instead of 
1106         reserveCapacity().
1107         * bytecompiler/SegmentedVector.h:
1108         (JSC::SegmentedVector::SegmentedVector):
1109         (JSC::SegmentedVector::last):
1110         (JSC::SegmentedVector::append):
1111         (JSC::SegmentedVector::removeLast):
1112         (JSC::SegmentedVector::grow): Renamed from reserveCapacity().
1113         (JSC::SegmentedVector::clear):
1114
1115 2008-12-01  Mark Rowe  <mrowe@apple.com>
1116
1117         Rubber-stamped by Anders Carlsson.
1118
1119         Disable WREC for x86_64 since memory allocated by the system allocator is not marked executable,
1120         which causes 64-bit debug builds to crash.  Once we have a dedicated allocator for executable
1121         memory we can turn this back on.
1122
1123         * wtf/Platform.h:
1124
1125 2008-12-01  Antti Koivisto  <antti@apple.com>
1126
1127         Reviewed by Maciej Stachowiak.
1128         
1129         Restore inline buffer after vector is shrunk back below its inline capacity.
1130
1131         * wtf/Vector.h:
1132         (WTF::):
1133         (WTF::VectorBuffer::restoreInlineBufferIfNeeded):
1134         (WTF::::shrinkCapacity):
1135
1136 2008-11-30  Antti Koivisto  <antti@apple.com>
1137
1138         Reviewed by Mark Rowe.
1139         
1140         Try to return free pages in the current thread cache too.
1141
1142         * wtf/FastMalloc.cpp:
1143         (WTF::TCMallocStats::releaseFastMallocFreeMemory):
1144
1145 2008-12-01  David Levin  <levin@chromium.org>
1146
1147         Reviewed by Alexey Proskuryakov.
1148
1149         https://bugs.webkit.org/show_bug.cgi?id=22567
1150         Make HashTable work as expected with respect to threads. Specifically, it has class-level
1151         thread safety and constant methods work on constant objects without synchronization.
1152         
1153         No observable change in behavior, so no test. This only affects debug builds.
1154
1155         * wtf/HashTable.cpp:
1156         (WTF::hashTableStatsMutex):
1157         (WTF::HashTableStats::~HashTableStats):
1158         (WTF::HashTableStats::recordCollisionAtCount):
1159         Guarded variable access with a mutex.
1160
1161         * wtf/HashTable.h:
1162         (WTF::::lookup):
1163         (WTF::::lookupForWriting):
1164         (WTF::::fullLookupForWriting):
1165         (WTF::::add):
1166         (WTF::::reinsert):
1167         (WTF::::remove):
1168         (WTF::::rehash):
1169         Changed increments of static variables to use atomicIncrement.
1170
1171         (WTF::::invalidateIterators):
1172         (WTF::addIterator):
1173         (WTF::removeIterator):
1174         Guarded mutable access with a mutex.
1175
1176 2008-11-29  Gavin Barraclough  <barraclough@apple.com>
1177
1178         Reviewed by Camron Zwarich.
1179
1180         Enable WREC on PLATFORM(X86_64).  This change predominantly requires changes to the
1181         WREC::Generator::generateEnter method to support the x86-64 ABI, and addition of
1182         support for a limited number of quadword operations in the X86Assembler.
1183
1184         This patch will cause the JS heap to be allocated with RWX permissions on 64-bit Mac
1185         platforms.  This is a regression with respect to previous 64-bit behaviour, but is no
1186         more permissive than on 32-bit builds.  This issue should be addressed at some point.
1187         (This is tracked by bug #21783.)
1188
1189         https://bugs.webkit.org/show_bug.cgi?id=22554
1190         Greater than 4x speedup on regexp-dna, on x86-64.
1191
1192         * assembler/MacroAssembler.h:
1193         (JSC::MacroAssembler::addPtr):
1194         (JSC::MacroAssembler::loadPtr):
1195         (JSC::MacroAssembler::storePtr):
1196         (JSC::MacroAssembler::pop):
1197         (JSC::MacroAssembler::push):
1198         (JSC::MacroAssembler::move):
1199         * assembler/X86Assembler.h:
1200         (JSC::X86Assembler::):
1201         (JSC::X86Assembler::movq_rr):
1202         (JSC::X86Assembler::addl_i8m):
1203         (JSC::X86Assembler::addl_i32r):
1204         (JSC::X86Assembler::addq_i8r):
1205         (JSC::X86Assembler::addq_i32r):
1206         (JSC::X86Assembler::movq_mr):
1207         (JSC::X86Assembler::movq_rm):
1208         * wrec/WREC.h:
1209         * wrec/WRECGenerator.cpp:
1210         (JSC::WREC::Generator::generateEnter):
1211         (JSC::WREC::Generator::generateReturnSuccess):
1212         (JSC::WREC::Generator::generateReturnFailure):
1213         * wtf/Platform.h:
1214         * wtf/TCSystemAlloc.cpp:
1215
1216 2008-12-01  Cameron Zwarich  <zwarich@apple.com>
1217
1218         Reviewed by Sam Weinig.
1219
1220         Preliminary work for bug 20340: SegmentedVector segment allocations can lead to unsafe use of temporary registers
1221         <https://bugs.webkit.org/show_bug.cgi?id=20340>
1222
1223         SegmentedVector currently frees segments and reallocates them when used
1224         as a stack. This can lead to unsafe use of pointers into freed segments.
1225
1226         In order to fix this problem, SegmentedVector will be changed to only
1227         grow and never shrink, with the sole exception of clearing all of its
1228         data, a capability that is required by Lexer. This patch changes the
1229         public interface to only allow for these capabilities.
1230
1231         * bytecompiler/BytecodeGenerator.cpp:
1232         (JSC::BytecodeGenerator::BytecodeGenerator): Use reserveCapacity()
1233         instead of resize() for m_globals and m_parameters.
1234         * bytecompiler/SegmentedVector.h:
1235         (JSC::SegmentedVector::resize): Removed.
1236         (JSC::SegmentedVector::reserveCapacity): Added.
1237         (JSC::SegmentedVector::clear): Added.
1238         (JSC::SegmentedVector::shrink): Removed.
1239         (JSC::SegmentedVector::grow): Removed.
1240         * parser/Lexer.cpp:
1241         (JSC::Lexer::clear): Use clear() instead of resize(0).
1242
1243 2008-11-30  Sam Weinig  <sam@webkit.org>
1244
1245         Reviewed by Mark Rowe.
1246
1247         Renames jumps to m_jumps in JumpList.
1248
1249         * assembler/MacroAssembler.h:
1250         (JSC::MacroAssembler::JumpList::link):
1251         (JSC::MacroAssembler::JumpList::linkTo):
1252         (JSC::MacroAssembler::JumpList::append):
1253
1254 2008-11-30  Antti Koivisto  <antti@apple.com>
1255
1256         Reviewed by Mark Rowe.
1257         
1258         https://bugs.webkit.org/show_bug.cgi?id=22557
1259         
1260         Report free size in central and thread caches too.
1261
1262         * wtf/FastMalloc.cpp:
1263         (WTF::TCMallocStats::fastMallocStatistics):
1264         * wtf/FastMalloc.h:
1265
1266 2008-11-29  Antti Koivisto  <antti@apple.com>
1267
1268         Reviewed by Dan Bernstein.
1269         
1270         https://bugs.webkit.org/show_bug.cgi?id=22557
1271         Add statistics for JavaScript GC heap.
1272
1273         * JavaScriptCore.exp:
1274         * runtime/Collector.cpp:
1275         (JSC::Heap::objectCount):
1276         (JSC::addToStatistics):
1277         (JSC::Heap::statistics):
1278         * runtime/Collector.h:
1279
1280 2008-11-29  Antti Koivisto  <antti@apple.com>
1281
1282         Fix debug build by adding a stub method.
1283
1284         * wtf/FastMalloc.cpp:
1285         (WTF::fastMallocStatistics):
1286
1287 2008-11-29  Antti Koivisto  <antti@apple.com>
1288
1289         Reviewed by Alexey Proskuryakov.
1290         
1291         https://bugs.webkit.org/show_bug.cgi?id=22557
1292         
1293         Add function for getting basic statistics from FastMalloc.
1294
1295         * JavaScriptCore.exp:
1296         * wtf/FastMalloc.cpp:
1297         (WTF::DLL_Length):
1298         (WTF::TCMalloc_PageHeap::ReturnedBytes):
1299         (WTF::TCMallocStats::fastMallocStatistics):
1300         * wtf/FastMalloc.h:
1301
1302 2008-11-29  Cameron Zwarich  <zwarich@apple.com>
1303
1304         Not reviewed.
1305
1306         The C++ standard does not automatically grant the friendships of an
1307         enclosing class to its nested subclasses, so we should do so explicitly.
1308         This fixes the GCC 4.0 build, although both GCC 4.2 and Visual C++ 2005
1309         accept the incorrect code as it is.
1310
1311         * assembler/MacroAssembler.h:
1312
1313 2008-11-29  Gavin Barraclough  <barraclough@apple.com>
1314
1315         Reviewed by Camron Zwarich.
1316
1317         Add the class MacroAssembler to provide some abstraction of code generation,
1318         and change WREC to make use of this class, rather than directly accessing
1319         the X86Assembler.
1320
1321         This patch also allows WREC to be compiled without the rest of the JIT enabled.
1322
1323         * JavaScriptCore.xcodeproj/project.pbxproj:
1324         * assembler/MacroAssembler.h: Added.
1325         (JSC::MacroAssembler::):
1326         (JSC::MacroAssembler::MacroAssembler):
1327         (JSC::MacroAssembler::copyCode):
1328         (JSC::MacroAssembler::Address::Address):
1329         (JSC::MacroAssembler::ImplicitAddress::ImplicitAddress):
1330         (JSC::MacroAssembler::BaseIndex::BaseIndex):
1331         (JSC::MacroAssembler::Label::Label):
1332         (JSC::MacroAssembler::Jump::Jump):
1333         (JSC::MacroAssembler::Jump::link):
1334         (JSC::MacroAssembler::Jump::linkTo):
1335         (JSC::MacroAssembler::JumpList::link):
1336         (JSC::MacroAssembler::JumpList::linkTo):
1337         (JSC::MacroAssembler::JumpList::append):
1338         (JSC::MacroAssembler::Imm32::Imm32):
1339         (JSC::MacroAssembler::add32):
1340         (JSC::MacroAssembler::or32):
1341         (JSC::MacroAssembler::sub32):
1342         (JSC::MacroAssembler::loadPtr):
1343         (JSC::MacroAssembler::load32):
1344         (JSC::MacroAssembler::load16):
1345         (JSC::MacroAssembler::storePtr):
1346         (JSC::MacroAssembler::store32):
1347         (JSC::MacroAssembler::pop):
1348         (JSC::MacroAssembler::push):
1349         (JSC::MacroAssembler::peek):
1350         (JSC::MacroAssembler::poke):
1351         (JSC::MacroAssembler::move):
1352         (JSC::MacroAssembler::compareImm32ForBranch):
1353         (JSC::MacroAssembler::compareImm32ForBranchEquality):
1354         (JSC::MacroAssembler::jae32):
1355         (JSC::MacroAssembler::je32):
1356         (JSC::MacroAssembler::je16):
1357         (JSC::MacroAssembler::jg32):
1358         (JSC::MacroAssembler::jge32):
1359         (JSC::MacroAssembler::jl32):
1360         (JSC::MacroAssembler::jle32):
1361         (JSC::MacroAssembler::jne32):
1362         (JSC::MacroAssembler::jump):
1363         (JSC::MacroAssembler::breakpoint):
1364         (JSC::MacroAssembler::ret):
1365         * assembler/X86Assembler.h:
1366         (JSC::X86Assembler::cmpw_rm):
1367         * interpreter/Interpreter.cpp:
1368         (JSC::Interpreter::Interpreter):
1369         * interpreter/Interpreter.h:
1370         (JSC::Interpreter::assemblerBuffer):
1371         * runtime/RegExp.cpp:
1372         (JSC::RegExp::RegExp):
1373         * wrec/WREC.cpp:
1374         (JSC::WREC::Generator::compileRegExp):
1375         * wrec/WREC.h:
1376         * wrec/WRECFunctors.cpp:
1377         (JSC::WREC::GeneratePatternCharacterFunctor::generateAtom):
1378         (JSC::WREC::GenerateCharacterClassFunctor::generateAtom):
1379         (JSC::WREC::GenerateBackreferenceFunctor::generateAtom):
1380         (JSC::WREC::GenerateParenthesesNonGreedyFunctor::generateAtom):
1381         * wrec/WRECFunctors.h:
1382         (JSC::WREC::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
1383         * wrec/WRECGenerator.cpp:
1384         (JSC::WREC::Generator::generateEnter):
1385         (JSC::WREC::Generator::generateReturnSuccess):
1386         (JSC::WREC::Generator::generateSaveIndex):
1387         (JSC::WREC::Generator::generateIncrementIndex):
1388         (JSC::WREC::Generator::generateLoadCharacter):
1389         (JSC::WREC::Generator::generateJumpIfEndOfInput):
1390         (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
1391         (JSC::WREC::Generator::generateReturnFailure):
1392         (JSC::WREC::Generator::generateBacktrack1):
1393         (JSC::WREC::Generator::generateBacktrackBackreference):
1394         (JSC::WREC::Generator::generateBackreferenceQuantifier):
1395         (JSC::WREC::Generator::generateNonGreedyQuantifier):
1396         (JSC::WREC::Generator::generateGreedyQuantifier):
1397         (JSC::WREC::Generator::generatePatternCharacter):
1398         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
1399         (JSC::WREC::Generator::generateCharacterClassInverted):
1400         (JSC::WREC::Generator::generateCharacterClass):
1401         (JSC::WREC::Generator::generateParentheses):
1402         (JSC::WREC::Generator::generateParenthesesNonGreedy):
1403         (JSC::WREC::Generator::generateParenthesesResetTrampoline):
1404         (JSC::WREC::Generator::generateAssertionBOL):
1405         (JSC::WREC::Generator::generateAssertionEOL):
1406         (JSC::WREC::Generator::generateAssertionWordBoundary):
1407         (JSC::WREC::Generator::generateBackreference):
1408         (JSC::WREC::Generator::terminateAlternative):
1409         (JSC::WREC::Generator::terminateDisjunction):
1410         * wrec/WRECGenerator.h:
1411         (JSC::WREC::Generator::Generator):
1412         * wrec/WRECParser.cpp:
1413         (JSC::WREC::Parser::parsePatternCharacterQualifier):
1414         (JSC::WREC::Parser::parseCharacterClassQuantifier):
1415         (JSC::WREC::Parser::parseBackreferenceQuantifier):
1416         (JSC::WREC::Parser::parseParentheses):
1417         (JSC::WREC::Parser::parseCharacterClass):
1418         (JSC::WREC::Parser::parseOctalEscape):
1419         (JSC::WREC::Parser::parseEscape):
1420         (JSC::WREC::Parser::parseTerm):
1421         (JSC::WREC::Parser::parseDisjunction):
1422         * wrec/WRECParser.h:
1423         (JSC::WREC::Parser::Parser):
1424         (JSC::WREC::Parser::parsePattern):
1425         (JSC::WREC::Parser::parseAlternative):
1426         * wtf/Platform.h:
1427
1428 2008-11-28  Simon Hausmann  <hausmann@webkit.org>
1429
1430         Reviewed by Tor Arne Vestbø.
1431
1432         Fix compilation on Windows CE
1433
1434         Port away from the use of errno after calling strtol(), instead
1435         detect conversion errors by checking the result and the stop
1436         position.
1437
1438         * runtime/DateMath.cpp:
1439         (JSC::parseLong):
1440         (JSC::parseDate):
1441
1442 2008-11-28  Joerg Bornemann  <joerg.bornemann@trolltech.com>
1443
1444         Reviewed by Simon Hausmann.
1445
1446         Implement lowResUTCTime() on Windows CE using GetSystemTime as _ftime() is not available.
1447
1448         * runtime/DateMath.cpp:
1449         (JSC::lowResUTCTime):
1450
1451 2008-11-28  Simon Hausmann  <hausmann@webkit.org>
1452
1453         Rubber-stamped by Tor Arne Vestbø.
1454
1455         Removed unnecessary inclusion of errno.h, which also fixes compilation on Windows CE.
1456
1457         * runtime/JSGlobalObjectFunctions.cpp:
1458
1459 2008-11-27  Cameron Zwarich  <zwarich@apple.com>
1460
1461         Not reviewed.
1462
1463         r38825 made JSFunction::m_body private, but some inspector code in
1464         WebCore sets the field. Add setters for it.
1465
1466         * runtime/JSFunction.h:
1467         (JSC::JSFunction::setBody):
1468
1469 2008-11-27  Sam Weinig  <sam@webkit.org>
1470
1471         Reviewed by Cameron Zwarich.
1472
1473         Fix FIXME by adding accessor for JSFunction's m_body property.
1474
1475         * interpreter/Interpreter.cpp:
1476         (JSC::Interpreter::cti_op_call_JSFunction):
1477         (JSC::Interpreter::cti_vm_dontLazyLinkCall):
1478         (JSC::Interpreter::cti_vm_lazyLinkCall):
1479         * profiler/Profiler.cpp:
1480         (JSC::createCallIdentifierFromFunctionImp):
1481         * runtime/Arguments.h:
1482         (JSC::Arguments::getArgumentsData):
1483         (JSC::Arguments::Arguments):
1484         * runtime/FunctionPrototype.cpp:
1485         (JSC::functionProtoFuncToString):
1486         * runtime/JSFunction.h:
1487         (JSC::JSFunction::JSFunction):
1488         (JSC::JSFunction::body):
1489
1490 2008-11-27  Sam Weinig  <sam@webkit.org>
1491
1492         Reviewed by Oliver Hunt.
1493
1494         Remove unused member variables from ProgramNode.
1495
1496         * parser/Nodes.h:
1497
1498 2008-11-27  Brent Fulgham  <bfulgham@gmail.com>
1499
1500         Reviewed by Alexey Proskuryakov.
1501
1502         Enable mouse panning feaure on Windows Cairo build.
1503         See http://bugs.webkit.org/show_bug.cgi?id=22525
1504
1505         * wtf/Platform.h: Enable mouse panning feaure on Windows Cairo build.
1506
1507 2008-11-27  Alp Toker  <alp@nuanti.com>
1508
1509         Change recently introduced C++ comments in Platform.h to C comments to
1510         fix the minidom build with traditional C.
1511
1512         Build GtkLauncher and minidom with the '-ansi' compiler flag to detect
1513         API header breakage at build time.
1514
1515         * GNUmakefile.am:
1516         * wtf/Platform.h:
1517
1518 2008-11-27  Alp Toker  <alp@nuanti.com>
1519
1520         Remove C++ comment from JavaScriptCore API headers (introduced r35449).
1521         Fixes build for ANSI C applications using the public API.
1522
1523         * API/WebKitAvailability.h:
1524
1525 2008-11-26  Eric Seidel  <eric@webkit.org>
1526
1527         No review, build fix only.
1528
1529         Fix the JSC Chromium Mac build by adding JavaScriptCore/icu into the include path
1530
1531         * JavaScriptCore.scons:
1532
1533 2008-11-25  Cameron Zwarich  <zwarich@apple.com>
1534
1535         Reviewed by Maciej Stachowiak.
1536
1537         Remove the unused member function JSFunction::getParameterName().
1538
1539         * runtime/JSFunction.cpp:
1540         * runtime/JSFunction.h:
1541
1542 2008-11-24  Gavin Barraclough  <barraclough@apple.com>
1543
1544         Reviewed by Geoff Garen.
1545
1546         Polymorpic caching for get by id chain.  Similar to the polymorphic caching already implemented
1547         for self and proto accesses (implemented by allowing multiple trampolines to be JIT genertaed,
1548         and linked together) - the get by id chain caching is implemented as a genericization of the
1549         proto list caching, allowing cached access lists to contain a mix of proto and proto chain
1550         accesses (since in JS style inheritance hierarchies you may commonly see a mix of properties
1551         being overridden on the direct prototype, or higher up its prototype chain).
1552
1553         In order to allow this patch to compile there is a fix to appease gcc 4.2 compiler issues
1554         (removing the jumps between fall-through cases in privateExecute).
1555         
1556         This patch also removes redundant immediate checking from the reptach code, and fixes a related
1557         memory leak (failure to deallocate trampolines). 
1558
1559         ~2% progression on v8 tests (bulk on the win on deltablue)
1560
1561         * bytecode/Instruction.h:
1562         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::):
1563         (JSC::PolymorphicAccessStructureList::PolymorphicStubInfo::set):
1564         (JSC::PolymorphicAccessStructureList::PolymorphicAccessStructureList):
1565         (JSC::PolymorphicAccessStructureList::derefStructures):
1566         * interpreter/Interpreter.cpp:
1567         (JSC::countPrototypeChainEntriesAndCheckForProxies):
1568         (JSC::Interpreter::tryCacheGetByID):
1569         (JSC::Interpreter::privateExecute):
1570         (JSC::Interpreter::tryCTICacheGetByID):
1571         (JSC::Interpreter::cti_op_get_by_id_self_fail):
1572         (JSC::getPolymorphicAccessStructureListSlot):
1573         (JSC::Interpreter::cti_op_get_by_id_proto_list):
1574         * interpreter/Interpreter.h:
1575         * jit/JIT.cpp:
1576         (JSC::JIT::privateCompileGetByIdProto):
1577         (JSC::JIT::privateCompileGetByIdSelfList):
1578         (JSC::JIT::privateCompileGetByIdProtoList):
1579         (JSC::JIT::privateCompileGetByIdChainList):
1580         (JSC::JIT::privateCompileGetByIdChain):
1581         (JSC::JIT::privateCompilePatchGetArrayLength):
1582         * jit/JIT.h:
1583         (JSC::JIT::compileGetByIdChainList):
1584
1585 2008-11-25  Cameron Zwarich  <zwarich@apple.com>
1586
1587         Reviewed by Alexey Proskuryakov.
1588
1589         Move the collect() call in Heap::heapAllocate() that is conditionally
1590         compiled under COLLECT_ON_EVERY_ALLOCATION so that it is before we get
1591         information about the heap. This was causing assertion failures for me
1592         while I was reducing a bug.
1593
1594         * runtime/Collector.cpp:
1595         (JSC::Heap::heapAllocate):
1596
1597 2008-11-24  Cameron Zwarich  <zwarich@apple.com>
1598
1599         Reviewed by Geoff Garen.
1600
1601         Bug 13790: Function declarations are not treated as statements (used to affect starcraft2.com)
1602         <https://bugs.webkit.org/show_bug.cgi?id=13790>
1603
1604         Modify the parser to treat function declarations as statements,
1605         simplifying the grammar in the process. Technically, according to the
1606         grammar in the ECMA spec, function declarations are not statements and
1607         can not be used everywhere that statements can, but it is not worth the
1608         possibility compatibility issues just to stick to the spec in this case.
1609
1610         * parser/Grammar.y:
1611         * parser/Nodes.cpp:
1612         (JSC::FuncDeclNode::emitBytecode): Avoid returning ignoredResult()
1613         as a result, because it causes a crash in DoWhileNode::emitBytecode().
1614
1615 2008-11-24  Geoffrey Garen  <ggaren@apple.com>
1616
1617         Reviewed by Sam Weinig.
1618         
1619         Unroll the regexp matching loop by 1. 10% speedup on simple matching
1620         stress test. No change on SunSpider.
1621         
1622         (I decided not to unroll to arbitrary levels because the returns diminsh
1623         quickly.)
1624
1625         * wrec/WREC.cpp:
1626         (JSC::WREC::compileRegExp):
1627         * wrec/WRECGenerator.cpp:
1628         (JSC::WREC::Generator::generateJumpIfEndOfInput):
1629         (JSC::WREC::Generator::generateJumpIfNotEndOfInput):
1630         * wrec/WRECGenerator.h:
1631         * wrec/WRECParser.h:
1632         (JSC::WREC::Parser::error):
1633         (JSC::WREC::Parser::parsePattern):
1634
1635 2008-11-24  Geoffrey Garen  <ggaren@apple.com>
1636
1637         Reviewed by Sam Weinig.
1638         
1639         Removed some unnecessary "Generator::" prefixes.
1640
1641         * wrec/WRECGenerator.cpp:
1642         (JSC::WREC::Generator::generateEnter):
1643         (JSC::WREC::Generator::generateReturnSuccess):
1644         (JSC::WREC::Generator::generateSaveIndex):
1645         (JSC::WREC::Generator::generateIncrementIndex):
1646         (JSC::WREC::Generator::generateLoopIfNotEndOfInput):
1647         (JSC::WREC::Generator::generateReturnFailure):
1648
1649 2008-11-24  Geoffrey Garen  <ggaren@apple.com>
1650
1651         Reviewed by Sam Weinig.
1652         
1653         Made a bunch of WREC::Parser functions private, and added an explicit
1654         "reset()" function, so a parser can be reused.
1655
1656         * wrec/WRECParser.h:
1657         (JSC::WREC::Parser::Parser):
1658         (JSC::WREC::Parser::generator):
1659         (JSC::WREC::Parser::ignoreCase):
1660         (JSC::WREC::Parser::multiline):
1661         (JSC::WREC::Parser::recordSubpattern):
1662         (JSC::WREC::Parser::numSubpatterns):
1663         (JSC::WREC::Parser::parsePattern):
1664         (JSC::WREC::Parser::parseAlternative):
1665         (JSC::WREC::Parser::reset):
1666
1667 2008-11-24  Gavin Barraclough  <barraclough@apple.com>
1668
1669         Reviewed by Camron Zwarich.
1670
1671         Implement repatching for get by id chain.
1672         Previously the access is performed in a function stub, in the repatch form
1673         the trampoline is not called to; instead the hot path is relinked to jump
1674         directly to the trampoline, if it fails it will jump to the slow case.
1675
1676         https://bugs.webkit.org/show_bug.cgi?id=22449
1677         3% progression on deltablue.
1678
1679         * jit/JIT.cpp:
1680         (JSC::JIT::privateCompileGetByIdProto):
1681         (JSC::JIT::privateCompileGetByIdChain):
1682
1683 2008-11-24  Joerg Bornemann  <joerg.bornemann@trolltech.com>
1684
1685         Reviewed by Simon Hausmann.
1686
1687         https://bugs.webkit.org/show_bug.cgi?id=20746
1688
1689         Various small compilation fixes to make the Qt port of WebKit
1690         compile on Windows CE.
1691
1692         * config.h: Don't set _CRT_RAND_S for CE, it's not available.
1693         * jsc.cpp: Disabled use of debugger includes for CE. It
1694           does not have the debugging functions.
1695         * runtime/DateMath.cpp: Use localtime() on Windows CE.
1696         * wtf/Assertions.cpp: Compile on Windows CE without debugger.
1697         * wtf/Assertions.h: Include windows.h before defining ASSERT.
1698         * wtf/MathExtras.h: Include stdlib.h instead of xmath.h.
1699         * wtf/Platform.h: Disable ERRNO_H and detect endianess based
1700           on the Qt endianess. On Qt for Windows CE the endianess is
1701           defined by the vendor specific build spec.
1702         * wtf/Threading.h: Use the volatile-less atomic functions.
1703         * wtf/dtoa.cpp: Compile without errno.
1704         * wtf/win/MainThreadWin.cpp: Don't include windows.h on CE after
1705         Assertions.h due to the redefinition of ASSERT.
1706
1707 2008-11-22  Gavin Barraclough  <barraclough@apple.com>
1708
1709         Reviewed by Camron Zwarich.
1710
1711         Replace accidentally deleted immediate check from get by id chain trampoline.
1712         https://bugs.webkit.org/show_bug.cgi?id=22413
1713
1714         * jit/JIT.cpp:
1715         (JSC::JIT::privateCompileGetByIdChain):
1716
1717 2008-11-21  Gavin Barraclough  <barraclough@apple.com>
1718
1719         Reviewed by Oliver Hunt.
1720
1721         Add (really) polymorphic caching for get by id self.
1722         Very similar to caching of prototype accesses, described below.
1723
1724         Oh, also, probably shouldn't have been leaking those structure list objects.
1725         
1726         4% preogression on deltablue.
1727
1728         * bytecode/CodeBlock.cpp:
1729         (JSC::CodeBlock::dump):
1730         (JSC::CodeBlock::derefStructures):
1731         (JSC::PrototypeStructureList::derefStructures):
1732         * bytecode/Instruction.h:
1733         * bytecode/Opcode.h:
1734         * interpreter/Interpreter.cpp:
1735         (JSC::Interpreter::privateExecute):
1736         (JSC::Interpreter::cti_op_get_by_id_self_fail):
1737         * jit/JIT.cpp:
1738         (JSC::JIT::privateCompileMainPass):
1739         (JSC::JIT::privateCompileGetByIdSelfList):
1740         (JSC::JIT::patchGetByIdSelf):
1741         * jit/JIT.h:
1742         (JSC::JIT::compileGetByIdSelfList):
1743
1744 2008-11-21  Geoffrey Garen  <ggaren@apple.com>
1745
1746         Reviewed by Sam Weinig.
1747         
1748         Fixed many crashes seen 'round the world (but only in release builds).
1749         
1750         Update outputParameter offset to reflect slight re-ordering of push
1751         instructions in r38669.
1752
1753         * wrec/WRECGenerator.cpp:
1754
1755 2008-11-21  Geoffrey Garen  <ggaren@apple.com>
1756
1757         Reviewed by Sam Weinig.
1758         
1759         A little more RegExp refactoring.
1760         
1761         Deployed a helper function for reading the next character. Used the "link
1762         vector of jumps" helper in a place I missed before.
1763
1764         * wrec/WRECGenerator.cpp:
1765         (JSC::WREC::Generator::generateLoadCharacter):
1766         (JSC::WREC::Generator::generatePatternCharacter):
1767         (JSC::WREC::Generator::generateCharacterClass):
1768         (JSC::WREC::Generator::generateAssertionEOL):
1769         (JSC::WREC::Generator::generateAssertionWordBoundary):
1770         * wrec/WRECGenerator.h:
1771
1772 2008-11-21  Alexey Proskuryakov  <ap@webkit.org>
1773
1774         Reviewed by Dan Bernstein.
1775
1776         https://bugs.webkit.org/show_bug.cgi?id=22402
1777         Replace abort() with CRASH()
1778
1779         * wtf/Assertions.h: Added a different method to crash, which should work even is 0xbbadbeef
1780         is a valid memory address.
1781
1782         * runtime/Collector.cpp:
1783         * wtf/FastMalloc.cpp:
1784         * wtf/FastMalloc.h:
1785         * wtf/TCSpinLock.h:
1786         Replace abort() with CRASH().
1787
1788 2008-11-21  Alexey Proskuryakov  <ap@webkit.org>
1789
1790         Reverted fix for bug 22042 (Replace abort() with CRASH()), because it was breaking
1791         FOR_EACH_OPCODE_ID macro somehow, making Safari crash.
1792
1793         * runtime/Collector.cpp:
1794         (JSC::Heap::heapAllocate):
1795         (JSC::Heap::collect):
1796         * wtf/Assertions.h:
1797         * wtf/FastMalloc.cpp:
1798         (WTF::fastMalloc):
1799         (WTF::fastCalloc):
1800         (WTF::fastRealloc):
1801         (WTF::InitSizeClasses):
1802         (WTF::PageHeapAllocator::New):
1803         (WTF::TCMallocStats::do_malloc):
1804         * wtf/FastMalloc.h:
1805         * wtf/TCSpinLock.h:
1806         (TCMalloc_SpinLock::Init):
1807         (TCMalloc_SpinLock::Finalize):
1808         (TCMalloc_SpinLock::Lock):
1809         (TCMalloc_SpinLock::Unlock):
1810
1811 2008-11-21  Geoffrey Garen  <ggaren@apple.com>
1812
1813         Reviewed by Sam Weinig.
1814         
1815         A little more RegExp refactoring.
1816         
1817         Moved all assembly from WREC.cpp into WRECGenerator helper functions.
1818         This should help with portability and readability.
1819         
1820         Removed ASSERTs after calls to executableCopy(), and changed
1821         executableCopy() to ASSERT instead.
1822
1823         * assembler/X86Assembler.h:
1824         (JSC::X86Assembler::executableCopy):
1825         * jit/JIT.cpp:
1826         (JSC::JIT::privateCompile):
1827         (JSC::JIT::privateCompileGetByIdSelf):
1828         (JSC::JIT::privateCompileGetByIdProto):
1829         (JSC::JIT::privateCompileGetByIdChain):
1830         (JSC::JIT::privateCompilePutByIdReplace):
1831         (JSC::JIT::privateCompilePutByIdTransition):
1832         (JSC::JIT::privateCompileCTIMachineTrampolines):
1833         (JSC::JIT::privateCompilePatchGetArrayLength):
1834         * wrec/WREC.cpp:
1835         (JSC::WREC::compileRegExp):
1836         * wrec/WRECGenerator.cpp:
1837         (JSC::WREC::Generator::generateEnter):
1838         (JSC::WREC::Generator::generateReturnSuccess):
1839         (JSC::WREC::Generator::generateSaveIndex):
1840         (JSC::WREC::Generator::generateIncrementIndex):
1841         (JSC::WREC::Generator::generateLoopIfNotEndOfInput):
1842         (JSC::WREC::Generator::generateReturnFailure):
1843         * wrec/WRECGenerator.h:
1844         * wrec/WRECParser.h:
1845         (JSC::WREC::Parser::ignoreCase):
1846         (JSC::WREC::Parser::generator):
1847
1848 2008-11-21  Alexey Proskuryakov  <ap@webkit.org>
1849
1850         Build fix.
1851
1852         * wtf/Assertions.h: Use ::abort for C++ code.
1853
1854 2008-11-21  Alexey Proskuryakov  <ap@webkit.org>
1855
1856         Reviewed by Sam Weinig.
1857
1858         https://bugs.webkit.org/show_bug.cgi?id=22402
1859         Replace abort() with CRASH()
1860
1861         * wtf/Assertions.h: Added abort() after an attempt to crash for extra safety.
1862
1863         * runtime/Collector.cpp:
1864         * wtf/FastMalloc.cpp:
1865         * wtf/FastMalloc.h:
1866         * wtf/TCSpinLock.h:
1867         Replace abort() with CRASH().
1868
1869 2008-11-21  Geoffrey Garen  <ggaren@apple.com>
1870
1871         Reviewed by Sam Weinig.
1872         
1873         Renamed wrec => generator.
1874
1875         * wrec/WRECFunctors.cpp:
1876         (JSC::WREC::GeneratePatternCharacterFunctor::generateAtom):
1877         (JSC::WREC::GeneratePatternCharacterFunctor::backtrack):
1878         (JSC::WREC::GenerateCharacterClassFunctor::generateAtom):
1879         (JSC::WREC::GenerateCharacterClassFunctor::backtrack):
1880         (JSC::WREC::GenerateBackreferenceFunctor::generateAtom):
1881         (JSC::WREC::GenerateBackreferenceFunctor::backtrack):
1882         (JSC::WREC::GenerateParenthesesNonGreedyFunctor::generateAtom):
1883
1884 2008-11-19  Gavin Barraclough  <barraclough@apple.com>
1885
1886         Reviewed by Darin Adler.
1887
1888         Add support for (really) polymorphic caching of prototype accesses.
1889         
1890         If a cached prototype access misses, cti_op_get_by_id_proto_list is called.
1891         When this occurs the Structure pointers from the instruction stream are copied
1892         off into a new ProtoStubInfo object.  A second prototype access trampoline is
1893         generated, and chained onto the first.  Subsequent missed call to
1894         cti_op_get_by_id_proto_list_append, which append futher new trampolines, up to
1895         PROTOTYPE_LIST_CACHE_SIZE (currently 4).  If any of the misses result in an
1896         access other than to a direct prototype property, list formation is halted (or
1897         for the initial miss, does not take place at all).
1898
1899         Separate fail case functions are provided for each access since this contributes
1900         to the performance progression (enables better processor branch prediction).
1901
1902         Overall this is a near 5% progression on v8, with around 10% wins on richards
1903         and deltablue.
1904
1905         * bytecode/CodeBlock.cpp:
1906         (JSC::CodeBlock::dump):
1907         (JSC::CodeBlock::derefStructures):
1908         * bytecode/Instruction.h:
1909         (JSC::ProtoStructureList::ProtoStubInfo::set):
1910         (JSC::ProtoStructureList::ProtoStructureList):
1911         (JSC::Instruction::Instruction):
1912         (JSC::Instruction::):
1913         * bytecode/Opcode.h:
1914         * interpreter/Interpreter.cpp:
1915         (JSC::Interpreter::privateExecute):
1916         (JSC::Interpreter::tryCTICacheGetByID):
1917         (JSC::Interpreter::cti_op_put_by_id_fail):
1918         (JSC::Interpreter::cti_op_get_by_id_self_fail):
1919         (JSC::Interpreter::cti_op_get_by_id_proto_list):
1920         (JSC::Interpreter::cti_op_get_by_id_proto_list_append):
1921         (JSC::Interpreter::cti_op_get_by_id_proto_list_full):
1922         (JSC::Interpreter::cti_op_get_by_id_proto_fail):
1923         (JSC::Interpreter::cti_op_get_by_id_chain_fail):
1924         (JSC::Interpreter::cti_op_get_by_id_array_fail):
1925         (JSC::Interpreter::cti_op_get_by_id_string_fail):
1926         * interpreter/Interpreter.h:
1927         * jit/JIT.cpp:
1928         (JSC::JIT::privateCompileMainPass):
1929         (JSC::JIT::privateCompileGetByIdSelf):
1930         (JSC::JIT::privateCompileGetByIdProto):
1931         (JSC::JIT::privateCompileGetByIdProtoList):
1932         (JSC::JIT::privateCompileGetByIdChain):
1933         (JSC::JIT::privateCompileCTIMachineTrampolines):
1934         (JSC::JIT::privateCompilePatchGetArrayLength):
1935         * jit/JIT.h:
1936         (JSC::JIT::compileGetByIdProtoList):
1937
1938 2008-11-20  Sam Weinig  <sam@webkit.org>
1939
1940         Try and fix the tiger build.
1941
1942         * parser/Grammar.y:
1943
1944 2008-11-20  Eric Seidel  <eric@webkit.org>
1945
1946         Reviewed by Darin Adler.
1947
1948         Make JavaScriptCore Chromium build under Windows (cmd only, cygwin almost works)
1949         https://bugs.webkit.org/show_bug.cgi?id=22347
1950
1951         * JavaScriptCore.scons:
1952         * parser/Parser.cpp: Add using std::auto_ptr since we use auto_ptr
1953
1954 2008-11-20  Steve Falkenburg  <sfalken@apple.com>
1955
1956         Fix build.
1957         
1958         Reviewed by Sam Weinig.
1959
1960         * parser/Parser.cpp:
1961         (JSC::Parser::reparse):
1962
1963 2008-11-20  Geoffrey Garen  <ggaren@apple.com>
1964
1965         Reviewed by Sam Weinig.
1966
1967         A little more RegExp refactoring.
1968         
1969         Created a helper function in the assembler for linking a vector of
1970         JmpSrc to a location, and deployed it in a bunch of places.
1971
1972         * JavaScriptCore.xcodeproj/project.pbxproj:
1973         * assembler/X86Assembler.h:
1974         (JSC::X86Assembler::link):
1975         * wrec/WREC.cpp:
1976         (JSC::WREC::compileRegExp):
1977         * wrec/WRECGenerator.cpp:
1978         (JSC::WREC::Generator::generateNonGreedyQuantifier):
1979         (JSC::WREC::Generator::generateGreedyQuantifier):
1980         (JSC::WREC::Generator::generateCharacterClassInverted):
1981         (JSC::WREC::Generator::generateParentheses):
1982         (JSC::WREC::Generator::generateParenthesesResetTrampoline):
1983         (JSC::WREC::Generator::generateAssertionBOL):
1984         (JSC::WREC::Generator::generateAssertionEOL):
1985         (JSC::WREC::Generator::generateAssertionWordBoundary):
1986         (JSC::WREC::Generator::terminateAlternative):
1987         (JSC::WREC::Generator::terminateDisjunction):
1988         * wrec/WRECParser.cpp:
1989         * wrec/WRECParser.h:
1990         (JSC::WREC::Parser::consumeHex):
1991
1992 2008-11-20  Sam Weinig  <sam@webkit.org>
1993
1994         Fix non-mac builds.
1995
1996         * parser/Lexer.cpp:
1997         * parser/Parser.cpp:
1998
1999 2008-11-20  Sam Weinig  <sam@webkit.org>
2000
2001         Reviewed by Darin Adler.
2002
2003         Patch for https://bugs.webkit.org/show_bug.cgi?id=22385
2004         <rdar://problem/6390179>
2005         Lazily reparse FunctionBodyNodes on first execution.
2006
2007         - Saves 57MB on Membuster head.
2008
2009         * bytecompiler/BytecodeGenerator.cpp:
2010         (JSC::BytecodeGenerator::generate): Remove vector shrinking since this is now
2011         handled by destroying the ScopeNodeData after generation.
2012
2013         * parser/Grammar.y: Add alternate NoNode version of the grammar
2014         that does not create nodes.  This is used to lazily create FunctionBodyNodes
2015         on first execution.
2016
2017         * parser/Lexer.cpp:
2018         (JSC::Lexer::setCode): Fix bug where on reparse, the Lexer was confused about
2019         what position and length meant. Position is the current position in the original
2020         data buffer (important for getting correct line/column information) and length
2021         the end offset in the original buffer.
2022         * parser/Lexer.h:
2023         (JSC::Lexer::sourceCode): Positions are relative to the beginning of the buffer.
2024
2025         * parser/Nodes.cpp:
2026         (JSC::ScopeNodeData::ScopeNodeData): Move initialization of ScopeNode data here.
2027         (JSC::ScopeNode::ScopeNode): Add constructor that only sets the JSGlobalData
2028         for FunctionBodyNode stubs.
2029         (JSC::ScopeNode::~ScopeNode): Release m_children now that we don't inherit from
2030         BlockNode.
2031         (JSC::ScopeNode::releaseNodes): Ditto.
2032         (JSC::EvalNode::generateBytecode): Only shrink m_children, as we need to keep around
2033         the rest of the data.
2034         (JSC::FunctionBodyNode::FunctionBodyNode): Add constructor that only sets the
2035         JSGlobalData. 
2036         (JSC::FunctionBodyNode::create): Ditto.
2037         (JSC::FunctionBodyNode::generateBytecode): If we don't have the data, do a reparse
2038         to construct it. Then after generation, destroy the data.
2039         (JSC::ProgramNode::generateBytecode): After generation, destroy the AST data.
2040         * parser/Nodes.h:
2041         (JSC::ExpressionNode::): Add isFuncExprNode for FunctionConstructor.
2042         (JSC::StatementNode::): Add isExprStatementNode for FunctionConstructor.
2043         (JSC::ExprStatementNode::): Ditto.
2044         (JSC::ExprStatementNode::expr): Add accessor for FunctionConstructor.
2045         (JSC::FuncExprNode::): Add isFuncExprNode for FunctionConstructor
2046
2047         (JSC::ScopeNode::adoptData): Adopts a ScopeNodeData.
2048         (JSC::ScopeNode::data): Accessor for ScopeNodeData.
2049         (JSC::ScopeNode::destroyData): Deletes the ScopeNodeData.
2050         (JSC::ScopeNode::setFeatures): Added.
2051         (JSC::ScopeNode::varStack): Added assert.
2052         (JSC::ScopeNode::functionStack): Ditto.
2053         (JSC::ScopeNode::children): Ditto.
2054         (JSC::ScopeNode::neededConstants): Ditto.
2055         Factor m_varStack, m_functionStack, m_children and m_numConstants into ScopeNodeData.
2056
2057         * parser/Parser.cpp:
2058         (JSC::Parser::reparse): Reparse the SourceCode in the FunctionBodyNode and set
2059         set up the ScopeNodeData for it. 
2060         * parser/Parser.h:
2061
2062         * parser/SourceCode.h:
2063         (JSC::SourceCode::endOffset): Added for use in the lexer.
2064
2065         * runtime/FunctionConstructor.cpp:
2066         (JSC::getFunctionBody): Assuming a ProgramNode with one FunctionExpression in it,
2067         get the FunctionBodyNode.  Any issues signifies a parse failure in constructFunction. 
2068         (JSC::constructFunction): Make parsing functions in the form new Function(""), easier
2069         by concatenating the strings together (with some glue) and parsing the function expression
2070         as a ProgramNode from which we can receive the FunctionBodyNode. This has the added benefit
2071         of not having special parsing code for the arguments and lazily constructing the 
2072         FunctionBodyNode's AST on first execution.
2073
2074         * runtime/Identifier.h:
2075         (JSC::operator!=): Added.
2076
2077 2008-11-20  Sam Weinig  <sam@webkit.org>
2078
2079         Reviewed by Geoffrey Garen.
2080
2081         Speedup the lexer to offset coming re-parsing patch.
2082
2083         - .6% progression on Sunspider.
2084
2085         * bytecompiler/SegmentedVector.h:
2086         (JSC::SegmentedVector::shrink): Fixed bug where m_size would not be
2087         set when shrinking to 0.
2088
2089         * parser/Lexer.cpp:
2090         (JSC::Lexer::Lexer):
2091         (JSC::Lexer::isIdentStart): Use isASCIIAlpha and isASCII to avoid going into ICU in the common cases.
2092         (JSC::Lexer::isIdentPart): Use isASCIIAlphanumeric and isASCII to avoid going into ICU in the common cases
2093         (JSC::isDecimalDigit): Use version in ASCIICType.h. Inlining it was a regression.
2094         (JSC::Lexer::isHexDigit): Ditto.
2095         (JSC::Lexer::isOctalDigit): Ditto.
2096         (JSC::Lexer::clear): Resize the m_identifiers SegmentedVector to initial
2097         capacity
2098         * parser/Lexer.h: Remove unused m_strings vector. Make m_identifiers
2099         a SegmentedVector<Identifier> to avoid allocating a new Identifier* for
2100         each identifier found.  The SegmentedVector is need so we can passes 
2101         references to the Identifier to the parser, which remain valid even when
2102         the vector is resized.
2103         (JSC::Lexer::makeIdentifier): Inline and return a reference to the added
2104         Identifier.
2105
2106 2008-11-20  Sam Weinig  <sam@webkit.org>
2107
2108         Reviewed by Darin Adler.
2109
2110         Add isASCII to ASCIICType.  Use coming soon!
2111
2112         * wtf/ASCIICType.h:
2113         (WTF::isASCII):
2114
2115 2008-11-20  Sam Weinig  <sam@webkit.org>
2116
2117         Reviewed by Darin Adler.
2118
2119         Add OwnPtr constructor and OwnPtr::adopt that take an auto_ptr.
2120
2121         * wtf/OwnPtr.h:
2122         (WTF::OwnPtr::OwnPtr):
2123         (WTF::OwnPtr::adopt):
2124
2125 2008-11-20  Alexey Proskuryakov  <ap@webkit.org>
2126
2127         Reviewed by Darin Adler.
2128
2129         https://bugs.webkit.org/show_bug.cgi?id=22364
2130         Crashes seen on Tiger buildbots due to worker threads exhausting pthread keys
2131
2132         * runtime/Collector.cpp:
2133         (JSC::Heap::Heap):
2134         (JSC::Heap::destroy):
2135         (JSC::Heap::makeUsableFromMultipleThreads):
2136         (JSC::Heap::registerThread):
2137         * runtime/Collector.h:
2138         Pthread key for tracking threads is only created on request now, because this is a limited
2139         resource, and thread tracking is not needed for worker heaps, or for WebCore heap.
2140
2141         * API/JSContextRef.cpp: (JSGlobalContextCreateInGroup): Call makeUsableFromMultipleThreads().
2142
2143         * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::sharedInstance): Ditto.
2144
2145         * runtime/JSGlobalData.h: (JSC::JSGlobalData::makeUsableFromMultipleThreads): Just forward
2146         the call to Heap, which clients need not know about, ideally.
2147
2148 2008-11-20  Geoffrey Garen  <ggaren@apple.com>
2149
2150         Reviewed by Sam Weinig.
2151         
2152         A little more WREC refactoring.
2153         
2154         Removed the "Register" suffix from register names in WREC, and renamed:
2155             currentPosition => index
2156             currentValue => character
2157             quantifierCount => repeatCount
2158             
2159         Added a top-level parsePattern function to the WREC parser, which
2160         allowed me to remove the error() and atEndOfPattern() accessors.
2161         
2162         Factored out an MSVC customization into a constant.
2163         
2164         Renamed nextLabel => beginPattern.
2165
2166         * wrec/WREC.cpp:
2167         (JSC::WREC::compileRegExp):
2168         * wrec/WRECGenerator.cpp:
2169         (JSC::WREC::Generator::generateBacktrack1):
2170         (JSC::WREC::Generator::generateBacktrackBackreference):
2171         (JSC::WREC::Generator::generateBackreferenceQuantifier):
2172         (JSC::WREC::Generator::generateNonGreedyQuantifier):
2173         (JSC::WREC::Generator::generateGreedyQuantifier):
2174         (JSC::WREC::Generator::generatePatternCharacter):
2175         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
2176         (JSC::WREC::Generator::generateCharacterClassInverted):
2177         (JSC::WREC::Generator::generateCharacterClass):
2178         (JSC::WREC::Generator::generateParentheses):
2179         (JSC::WREC::Generator::generateParenthesesResetTrampoline):
2180         (JSC::WREC::Generator::generateAssertionBOL):
2181         (JSC::WREC::Generator::generateAssertionEOL):
2182         (JSC::WREC::Generator::generateAssertionWordBoundary):
2183         (JSC::WREC::Generator::generateBackreference):
2184         (JSC::WREC::Generator::generateDisjunction):
2185         (JSC::WREC::Generator::terminateDisjunction):
2186         * wrec/WRECGenerator.h:
2187         * wrec/WRECParser.h:
2188         (JSC::WREC::Parser::parsePattern):
2189
2190 2008-11-19  Geoffrey Garen  <ggaren@apple.com>
2191
2192         Reviewed by Darin Adler.
2193         
2194         https://bugs.webkit.org/show_bug.cgi?id=22361
2195         A little more RegExp refactoring.
2196         
2197         Consistently named variables holding the starting position at which
2198         regexp matching should begin to "startOffset".
2199         
2200         A few more "regExpObject" => "regExpConstructor" changes.
2201         
2202         Refactored RegExpObject::match for clarity, and replaced a slow "get"
2203         of the "global" property with a fast access to the global bit.
2204         
2205         Made the error message you see when RegExpObject::match has no input a
2206         little more informative, as in Firefox.
2207
2208         * runtime/RegExp.cpp:
2209         (JSC::RegExp::match):
2210         * runtime/RegExp.h:
2211         * runtime/RegExpObject.cpp:
2212         (JSC::RegExpObject::match):
2213         * runtime/StringPrototype.cpp:
2214         (JSC::stringProtoFuncReplace):
2215         (JSC::stringProtoFuncMatch):
2216         (JSC::stringProtoFuncSearch):
2217
2218 2008-11-19  Geoffrey Garen  <ggaren@apple.com>
2219
2220         Reviewed by Sam Weinig.
2221         
2222         A little more refactoring.
2223         
2224         Removed the "emit" and "emitUnlinked" prefixes from the assembler.
2225         
2226         Moved the JmpSrc and JmpDst class definitions to the top of the X86
2227         assembler class, in accordance with WebKit style guidelines.
2228
2229         * assembler/X86Assembler.h:
2230         (JSC::X86Assembler::JmpSrc::JmpSrc):
2231         (JSC::X86Assembler::JmpDst::JmpDst):
2232         (JSC::X86Assembler::int3):
2233         (JSC::X86Assembler::pushl_m):
2234         (JSC::X86Assembler::popl_m):
2235         (JSC::X86Assembler::movl_rr):
2236         (JSC::X86Assembler::addl_rr):
2237         (JSC::X86Assembler::addl_i8r):
2238         (JSC::X86Assembler::addl_i8m):
2239         (JSC::X86Assembler::addl_i32r):
2240         (JSC::X86Assembler::addl_mr):
2241         (JSC::X86Assembler::andl_rr):
2242         (JSC::X86Assembler::andl_i32r):
2243         (JSC::X86Assembler::cmpl_i8r):
2244         (JSC::X86Assembler::cmpl_rr):
2245         (JSC::X86Assembler::cmpl_rm):
2246         (JSC::X86Assembler::cmpl_mr):
2247         (JSC::X86Assembler::cmpl_i32r):
2248         (JSC::X86Assembler::cmpl_i32m):
2249         (JSC::X86Assembler::cmpl_i8m):
2250         (JSC::X86Assembler::cmpw_rm):
2251         (JSC::X86Assembler::orl_rr):
2252         (JSC::X86Assembler::orl_mr):
2253         (JSC::X86Assembler::orl_i32r):
2254         (JSC::X86Assembler::subl_rr):
2255         (JSC::X86Assembler::subl_i8r):
2256         (JSC::X86Assembler::subl_i8m):
2257         (JSC::X86Assembler::subl_i32r):
2258         (JSC::X86Assembler::subl_mr):
2259         (JSC::X86Assembler::testl_i32r):
2260         (JSC::X86Assembler::testl_i32m):
2261         (JSC::X86Assembler::testl_rr):
2262         (JSC::X86Assembler::xorl_i8r):
2263         (JSC::X86Assembler::xorl_rr):
2264         (JSC::X86Assembler::sarl_i8r):
2265         (JSC::X86Assembler::sarl_CLr):
2266         (JSC::X86Assembler::shl_i8r):
2267         (JSC::X86Assembler::shll_CLr):
2268         (JSC::X86Assembler::imull_rr):
2269         (JSC::X86Assembler::imull_i32r):
2270         (JSC::X86Assembler::idivl_r):
2271         (JSC::X86Assembler::negl_r):
2272         (JSC::X86Assembler::movl_mr):
2273         (JSC::X86Assembler::movzbl_rr):
2274         (JSC::X86Assembler::movzwl_mr):
2275         (JSC::X86Assembler::movl_rm):
2276         (JSC::X86Assembler::movl_i32r):
2277         (JSC::X86Assembler::movl_i32m):
2278         (JSC::X86Assembler::leal_mr):
2279         (JSC::X86Assembler::jmp_r):
2280         (JSC::X86Assembler::jmp_m):
2281         (JSC::X86Assembler::movsd_mr):
2282         (JSC::X86Assembler::xorpd_mr):
2283         (JSC::X86Assembler::movsd_rm):
2284         (JSC::X86Assembler::movd_rr):
2285         (JSC::X86Assembler::cvtsi2sd_rr):
2286         (JSC::X86Assembler::cvttsd2si_rr):
2287         (JSC::X86Assembler::addsd_mr):
2288         (JSC::X86Assembler::subsd_mr):
2289         (JSC::X86Assembler::mulsd_mr):
2290         (JSC::X86Assembler::addsd_rr):
2291         (JSC::X86Assembler::subsd_rr):
2292         (JSC::X86Assembler::mulsd_rr):
2293         (JSC::X86Assembler::ucomis_rr):
2294         (JSC::X86Assembler::pextrw_irr):
2295         (JSC::X86Assembler::call):
2296         (JSC::X86Assembler::jmp):
2297         (JSC::X86Assembler::jne):
2298         (JSC::X86Assembler::jnz):
2299         (JSC::X86Assembler::je):
2300         (JSC::X86Assembler::jl):
2301         (JSC::X86Assembler::jb):
2302         (JSC::X86Assembler::jle):
2303         (JSC::X86Assembler::jbe):
2304         (JSC::X86Assembler::jge):
2305         (JSC::X86Assembler::jg):
2306         (JSC::X86Assembler::ja):
2307         (JSC::X86Assembler::jae):
2308         (JSC::X86Assembler::jo):
2309         (JSC::X86Assembler::jp):
2310         (JSC::X86Assembler::js):
2311         (JSC::X86Assembler::predictNotTaken):
2312         (JSC::X86Assembler::convertToFastCall):
2313         (JSC::X86Assembler::restoreArgumentReference):
2314         (JSC::X86Assembler::restoreArgumentReferenceForTrampoline):
2315         (JSC::X86Assembler::modRm_rr):
2316         (JSC::X86Assembler::modRm_rr_Unchecked):
2317         (JSC::X86Assembler::modRm_rm):
2318         (JSC::X86Assembler::modRm_rm_Unchecked):
2319         (JSC::X86Assembler::modRm_rmsib):
2320         (JSC::X86Assembler::modRm_opr):
2321         (JSC::X86Assembler::modRm_opr_Unchecked):
2322         (JSC::X86Assembler::modRm_opm):
2323         (JSC::X86Assembler::modRm_opm_Unchecked):
2324         (JSC::X86Assembler::modRm_opmsib):
2325         * jit/JIT.cpp:
2326         (JSC::JIT::emitNakedCall):
2327         (JSC::JIT::emitNakedFastCall):
2328         (JSC::JIT::emitCTICall):
2329         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
2330         (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
2331         (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
2332         (JSC::JIT::emitFastArithIntToImmOrSlowCase):
2333         (JSC::JIT::emitArithIntToImmWithJump):
2334         (JSC::JIT::compileOpCall):
2335         (JSC::JIT::compileOpStrictEq):
2336         (JSC::JIT::emitSlowScriptCheck):
2337         (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
2338         (JSC::JIT::compileBinaryArithOp):
2339         (JSC::JIT::privateCompileMainPass):
2340         (JSC::JIT::privateCompileSlowCases):
2341         (JSC::JIT::privateCompile):
2342         (JSC::JIT::privateCompileGetByIdSelf):
2343         (JSC::JIT::privateCompileGetByIdProto):
2344         (JSC::JIT::privateCompileGetByIdChain):
2345         (JSC::JIT::privateCompilePutByIdReplace):
2346         (JSC::JIT::privateCompilePutByIdTransition):
2347         (JSC::JIT::privateCompileCTIMachineTrampolines):
2348         (JSC::JIT::privateCompilePatchGetArrayLength):
2349         * wrec/WREC.cpp:
2350         (JSC::WREC::compileRegExp):
2351         * wrec/WRECGenerator.cpp:
2352         (JSC::WREC::Generator::generateBackreferenceQuantifier):
2353         (JSC::WREC::Generator::generateNonGreedyQuantifier):
2354         (JSC::WREC::Generator::generateGreedyQuantifier):
2355         (JSC::WREC::Generator::generatePatternCharacter):
2356         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
2357         (JSC::WREC::Generator::generateCharacterClassInverted):
2358         (JSC::WREC::Generator::generateCharacterClass):
2359         (JSC::WREC::Generator::generateParentheses):
2360         (JSC::WREC::Generator::generateParenthesesNonGreedy):
2361         (JSC::WREC::Generator::generateParenthesesResetTrampoline):
2362         (JSC::WREC::Generator::generateAssertionBOL):
2363         (JSC::WREC::Generator::generateAssertionEOL):
2364         (JSC::WREC::Generator::generateAssertionWordBoundary):
2365         (JSC::WREC::Generator::generateBackreference):
2366         (JSC::WREC::Generator::generateDisjunction):
2367
2368 2008-11-19  Simon Hausmann  <hausmann@webkit.org>
2369
2370         Sun CC build fix, removed trailing comman for last enum value.
2371
2372         * wtf/unicode/qt4/UnicodeQt4.h:
2373         (WTF::Unicode::):
2374
2375 2008-11-19  Mark Rowe  <mrowe@apple.com>
2376
2377         Reviewed by Alexey Proskuryakov.
2378
2379         Expand the workaround for Apple GCC compiler bug <rdar://problem/6354696> to all versions of GCC 4.0.1.
2380         It has been observed with builds 5465 (Xcode 3.0) and 5484 (Xcode 3.1), and there is no evidence
2381         that it has been fixed in newer builds of GCC 4.0.1.
2382
2383         This addresses <https://bugs.webkit.org/show_bug.cgi?id=22351> (WebKit nightly crashes on launch on 10.4.11).
2384
2385         * wtf/StdLibExtras.h:
2386
2387 2008-11-18  Cameron Zwarich  <zwarich@apple.com>
2388
2389         Reviewed by Maciej Stachowiak and Geoff Garen.
2390
2391         Bug 22287: ASSERTION FAILED: Not enough jumps linked in slow case codegen in CTI::privateCompileSlowCases())
2392         <https://bugs.webkit.org/show_bug.cgi?id=22287>
2393
2394         Fix a typo in the number cell reuse code where the first and second
2395         operands are sometimes confused.
2396
2397         * jit/JIT.cpp:
2398         (JSC::JIT::compileBinaryArithOpSlowCase):
2399
2400 2008-11-18  Dan Bernstein  <mitz@apple.com>
2401
2402         - try to fix the Windows build
2403
2404         * interpreter/Interpreter.cpp:
2405         (JSC::Interpreter::privateExecute):
2406
2407 2008-11-18  Geoffrey Garen  <ggaren@apple.com>
2408
2409         Reviewed by Sam Weinig.
2410         
2411         Minor RegExp cleanup.
2412         
2413         SunSpider says no change.
2414
2415         * runtime/RegExpObject.cpp:
2416         (JSC::RegExpObject::match): Renamed "regExpObj" to "regExpConstructor".
2417
2418         * wrec/WREC.cpp:
2419         (JSC::WREC::compileRegExp): Instead of checking for a NULL output vector,
2420         ASSERT that the output vector is not NULL. (The rest of WREC is not
2421         safe to use with a NULL output vector, and we probably don't want to
2422         spend the time and/or performance to make it safe.)
2423
2424 2008-11-18  Geoffrey Garen  <ggaren@apple.com>
2425
2426         Reviewed by Darin Adler.
2427         
2428         A little more renaming and refactoring.
2429         
2430         VM_CHECK_EXCEPTION() => CHECK_FOR_EXCEPTION().
2431         NEXT_INSTRUCTION => NEXT_INSTRUCTION().
2432
2433         Removed the "Error_" and "TempError_" prefixes from WREC error types.
2434
2435         Refactored the WREC parser so it doesn't need a "setError" function,
2436         and changed "isEndOfPattern" and its use -- they read kind of backwards
2437         before.
2438         
2439         Changed our "TODO:" error messages at least to say something, since you
2440         can't say "TODO:" in shipping software.
2441
2442         * interpreter/Interpreter.cpp:
2443         (JSC::Interpreter::privateExecute):
2444         (JSC::Interpreter::cti_op_convert_this):
2445         (JSC::Interpreter::cti_op_add):
2446         (JSC::Interpreter::cti_op_pre_inc):
2447         (JSC::Interpreter::cti_op_loop_if_less):
2448         (JSC::Interpreter::cti_op_loop_if_lesseq):
2449         (JSC::Interpreter::cti_op_put_by_id):
2450         (JSC::Interpreter::cti_op_put_by_id_second):
2451         (JSC::Interpreter::cti_op_put_by_id_generic):
2452         (JSC::Interpreter::cti_op_put_by_id_fail):
2453         (JSC::Interpreter::cti_op_get_by_id):
2454         (JSC::Interpreter::cti_op_get_by_id_second):
2455         (JSC::Interpreter::cti_op_get_by_id_generic):
2456         (JSC::Interpreter::cti_op_get_by_id_fail):
2457         (JSC::Interpreter::cti_op_instanceof):
2458         (JSC::Interpreter::cti_op_del_by_id):
2459         (JSC::Interpreter::cti_op_mul):
2460         (JSC::Interpreter::cti_op_call_NotJSFunction):
2461         (JSC::Interpreter::cti_op_resolve):
2462         (JSC::Interpreter::cti_op_construct_NotJSConstruct):
2463         (JSC::Interpreter::cti_op_get_by_val):
2464         (JSC::Interpreter::cti_op_resolve_func):
2465         (JSC::Interpreter::cti_op_sub):
2466         (JSC::Interpreter::cti_op_put_by_val):
2467         (JSC::Interpreter::cti_op_put_by_val_array):
2468         (JSC::Interpreter::cti_op_lesseq):
2469         (JSC::Interpreter::cti_op_loop_if_true):
2470         (JSC::Interpreter::cti_op_negate):
2471         (JSC::Interpreter::cti_op_resolve_skip):
2472         (JSC::Interpreter::cti_op_resolve_global):
2473         (JSC::Interpreter::cti_op_div):
2474         (JSC::Interpreter::cti_op_pre_dec):
2475         (JSC::Interpreter::cti_op_jless):
2476         (JSC::Interpreter::cti_op_not):
2477         (JSC::Interpreter::cti_op_jtrue):
2478         (JSC::Interpreter::cti_op_post_inc):
2479         (JSC::Interpreter::cti_op_eq):
2480         (JSC::Interpreter::cti_op_lshift):
2481         (JSC::Interpreter::cti_op_bitand):
2482         (JSC::Interpreter::cti_op_rshift):
2483         (JSC::Interpreter::cti_op_bitnot):
2484         (JSC::Interpreter::cti_op_resolve_with_base):
2485         (JSC::Interpreter::cti_op_mod):
2486         (JSC::Interpreter::cti_op_less):
2487         (JSC::Interpreter::cti_op_neq):
2488         (JSC::Interpreter::cti_op_post_dec):
2489         (JSC::Interpreter::cti_op_urshift):
2490         (JSC::Interpreter::cti_op_bitxor):
2491         (JSC::Interpreter::cti_op_bitor):
2492         (JSC::Interpreter::cti_op_push_scope):
2493         (JSC::Interpreter::cti_op_to_jsnumber):
2494         (JSC::Interpreter::cti_op_in):
2495         (JSC::Interpreter::cti_op_del_by_val):
2496         * wrec/WREC.cpp:
2497         (JSC::WREC::compileRegExp):
2498         * wrec/WRECParser.cpp:
2499         (JSC::WREC::Parser::parseGreedyQuantifier):
2500         (JSC::WREC::Parser::parseParentheses):
2501         (JSC::WREC::Parser::parseCharacterClass):
2502         (JSC::WREC::Parser::parseEscape):
2503         * wrec/WRECParser.h:
2504         (JSC::WREC::Parser::):
2505         (JSC::WREC::Parser::atEndOfPattern):
2506
2507 2008-11-18  Alexey Proskuryakov  <ap@webkit.org>
2508
2509         Reviewed by Darin Adler.
2510
2511         https://bugs.webkit.org/show_bug.cgi?id=22337
2512         Enable workers by default
2513
2514         * Configurations/JavaScriptCore.xcconfig: Define ENABLE_WORKERS.
2515
2516 2008-11-18  Alexey Proskuryakov  <ap@webkit.org>
2517
2518         - Windows build fix
2519
2520         * wrec/WRECFunctors.h:
2521         * wrec/WRECGenerator.h:
2522         * wrec/WRECParser.h:
2523         CharacterClass is a struct, not a class, fix forward declarations.
2524
2525 2008-11-18  Dan Bernstein  <mitz@apple.com>
2526
2527         - Windows build fix
2528
2529         * assembler/X86Assembler.h:
2530
2531 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2532
2533         Not reviewed.
2534         
2535         Try to fix gtk build.
2536
2537         * wrec/Quantifier.h:
2538
2539 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2540
2541         Not reviewed.
2542         
2543         Try to fix gtk build.
2544
2545         * assembler/AssemblerBuffer.h:
2546
2547 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2548
2549         Reviewed by Sam Weinig.
2550         
2551         Split WREC classes out into individual files, with a few modifications
2552         to more closely match the WebKit coding style.
2553
2554         * GNUmakefile.am:
2555         * JavaScriptCore.scons:
2556         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2557         * JavaScriptCore.xcodeproj/project.pbxproj:
2558         * assembler/X86Assembler.h:
2559         * runtime/RegExp.cpp:
2560         * wrec/CharacterClass.cpp: Copied from wrec/CharacterClassConstructor.cpp.
2561         (JSC::WREC::CharacterClass::newline):
2562         (JSC::WREC::CharacterClass::digits):
2563         (JSC::WREC::CharacterClass::spaces):
2564         (JSC::WREC::CharacterClass::wordchar):
2565         (JSC::WREC::CharacterClass::nondigits):
2566         (JSC::WREC::CharacterClass::nonspaces):
2567         (JSC::WREC::CharacterClass::nonwordchar):
2568         * wrec/CharacterClass.h: Copied from wrec/CharacterClassConstructor.h.
2569         * wrec/CharacterClassConstructor.cpp:
2570         (JSC::WREC::CharacterClassConstructor::addSortedRange):
2571         (JSC::WREC::CharacterClassConstructor::append):
2572         * wrec/CharacterClassConstructor.h:
2573         * wrec/Quantifier.h: Copied from wrec/WREC.h.
2574         * wrec/WREC.cpp:
2575         (JSC::WREC::compileRegExp):
2576         * wrec/WREC.h:
2577         * wrec/WRECFunctors.cpp: Copied from wrec/WREC.cpp.
2578         * wrec/WRECFunctors.h: Copied from wrec/WREC.cpp.
2579         (JSC::WREC::GenerateAtomFunctor::~GenerateAtomFunctor):
2580         (JSC::WREC::GeneratePatternCharacterFunctor::GeneratePatternCharacterFunctor):
2581         (JSC::WREC::GenerateCharacterClassFunctor::GenerateCharacterClassFunctor):
2582         (JSC::WREC::GenerateBackreferenceFunctor::GenerateBackreferenceFunctor):
2583         (JSC::WREC::GenerateParenthesesNonGreedyFunctor::GenerateParenthesesNonGreedyFunctor):
2584         * wrec/WRECGenerator.cpp: Copied from wrec/WREC.cpp.
2585         (JSC::WREC::Generator::generatePatternCharacter):
2586         (JSC::WREC::Generator::generateCharacterClassInvertedRange):
2587         (JSC::WREC::Generator::generateCharacterClassInverted):
2588         (JSC::WREC::Generator::generateCharacterClass):
2589         (JSC::WREC::Generator::generateParentheses):
2590         (JSC::WREC::Generator::generateAssertionBOL):
2591         (JSC::WREC::Generator::generateAssertionEOL):
2592         (JSC::WREC::Generator::generateAssertionWordBoundary):
2593         * wrec/WRECGenerator.h: Copied from wrec/WREC.h.
2594         * wrec/WRECParser.cpp: Copied from wrec/WREC.cpp.
2595         (JSC::WREC::Parser::parseGreedyQuantifier):
2596         (JSC::WREC::Parser::parseCharacterClassQuantifier):
2597         (JSC::WREC::Parser::parseParentheses):
2598         (JSC::WREC::Parser::parseCharacterClass):
2599         (JSC::WREC::Parser::parseEscape):
2600         (JSC::WREC::Parser::parseTerm):
2601         * wrec/WRECParser.h: Copied from wrec/WREC.h.
2602         (JSC::WREC::Parser::):
2603         (JSC::WREC::Parser::Parser):
2604         (JSC::WREC::Parser::setError):
2605         (JSC::WREC::Parser::error):
2606         (JSC::WREC::Parser::recordSubpattern):
2607         (JSC::WREC::Parser::numSubpatterns):
2608         (JSC::WREC::Parser::ignoreCase):
2609         (JSC::WREC::Parser::multiline):
2610
2611 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2612
2613         Not reviewed.
2614         
2615         Try to fix a few builds.
2616
2617         * JavaScriptCoreSources.bkl:
2618
2619 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2620
2621         Not reviewed.
2622         
2623         Try to fix a few builds.
2624
2625         * JavaScriptCore.pri:
2626         * JavaScriptCore.scons:
2627         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2628
2629 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2630
2631         Reviewed by Sam Weinig.
2632         
2633         Moved VM/CTI.* => jit/JIT.*.
2634         
2635         Removed VM.
2636
2637         * GNUmakefile.am:
2638         * JavaScriptCore.pri:
2639         * JavaScriptCore.scons:
2640         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2641         * JavaScriptCore.xcodeproj/project.pbxproj:
2642         * VM/CTI.cpp: Removed.
2643         * VM/CTI.h: Removed.
2644         * bytecode/CodeBlock.cpp:
2645         * interpreter/Interpreter.cpp:
2646         * jit: Added.
2647         * jit/JIT.cpp: Copied from VM/CTI.cpp.
2648         * jit/JIT.h: Copied from VM/CTI.h.
2649         * runtime/RegExp.cpp:
2650
2651 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2652
2653         Reviewed by Sam Weinig.
2654         
2655         Moved runtime/ExecState.* => interpreter/CallFrame.*.
2656
2657         * API/JSBase.cpp:
2658         * API/OpaqueJSString.cpp:
2659         * GNUmakefile.am:
2660         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2661         * JavaScriptCore.xcodeproj/project.pbxproj:
2662         * debugger/DebuggerCallFrame.h:
2663         * interpreter/CallFrame.cpp: Copied from runtime/ExecState.cpp.
2664         * interpreter/CallFrame.h: Copied from runtime/ExecState.h.
2665         * interpreter/Interpreter.cpp:
2666         * parser/Nodes.cpp:
2667         * profiler/ProfileGenerator.cpp:
2668         * profiler/Profiler.cpp:
2669         * runtime/ClassInfo.h:
2670         * runtime/Collector.cpp:
2671         * runtime/Completion.cpp:
2672         * runtime/ExceptionHelpers.cpp:
2673         * runtime/ExecState.cpp: Removed.
2674         * runtime/ExecState.h: Removed.
2675         * runtime/Identifier.cpp:
2676         * runtime/JSFunction.cpp:
2677         * runtime/JSGlobalObjectFunctions.cpp:
2678         * runtime/JSLock.cpp:
2679         * runtime/JSNumberCell.h:
2680         * runtime/JSObject.h:
2681         * runtime/JSString.h:
2682         * runtime/Lookup.h:
2683         * runtime/PropertyNameArray.h:
2684
2685 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2686
2687         Not reviewed.
2688         
2689         Try to fix Windows build.
2690
2691         * API/APICast.h:
2692
2693 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2694
2695         Not reviewed.
2696         
2697         Try to fix Windows build.
2698
2699         * API/APICast.h:
2700         * runtime/ExecState.h:
2701
2702 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2703
2704         Reviewed by Sam Weinig.
2705         
2706         Moved VM/SamplingTool.* => bytecode/SamplingTool.*.
2707
2708         * GNUmakefile.am:
2709         * JavaScriptCore.pri:
2710         * JavaScriptCore.scons:
2711         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2712         * JavaScriptCore.xcodeproj/project.pbxproj:
2713         * JavaScriptCoreSources.bkl:
2714         * VM/SamplingTool.cpp: Removed.
2715         * VM/SamplingTool.h: Removed.
2716         * bytecode/SamplingTool.cpp: Copied from VM/SamplingTool.cpp.
2717         * bytecode/SamplingTool.h: Copied from VM/SamplingTool.h.
2718         * jsc.cpp:
2719         (runWithScripts):
2720
2721 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2722
2723         Not reviewed.
2724         
2725         Try to fix Windows build.
2726
2727         * runtime/ExecState.h:
2728
2729 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2730
2731         Reviewed by Sam Weinig.
2732         
2733         Moved VM/ExceptionHelpers.cpp => runtime/ExceptionHelpers.cpp.
2734
2735         * GNUmakefile.am:
2736         * JavaScriptCore.pri:
2737         * JavaScriptCore.scons:
2738         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2739         * JavaScriptCore.xcodeproj/project.pbxproj:
2740         * JavaScriptCoreSources.bkl:
2741         * VM/ExceptionHelpers.cpp: Removed.
2742         * runtime/ExceptionHelpers.cpp: Copied from VM/ExceptionHelpers.cpp.
2743
2744 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2745
2746         Reviewed by Sam Weinig.
2747         
2748         Moved VM/RegisterFile.cpp => interpreter/RegisterFile.cpp.
2749
2750         * AllInOneFile.cpp:
2751         * GNUmakefile.am:
2752         * JavaScriptCore.pri:
2753         * JavaScriptCore.scons:
2754         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2755         * JavaScriptCore.xcodeproj/project.pbxproj:
2756         * JavaScriptCoreSources.bkl:
2757         * VM/RegisterFile.cpp: Removed.
2758         * interpreter/RegisterFile.cpp: Copied from VM/RegisterFile.cpp.
2759
2760 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2761
2762         Not reviewed.
2763         
2764         Try to fix Windows build.
2765
2766         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2767
2768 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2769
2770         Not reviewed.
2771         
2772         Try to fix Windows build.
2773
2774         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2775
2776 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2777
2778         Not reviewed.
2779         
2780         Try to fix Windows build.
2781
2782         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2783
2784 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2785
2786         Reviewed by Sam Weinig.
2787         
2788         Moved:
2789             VM/ExceptionHelpers.h => runtime/ExceptionHelpers.h
2790             VM/Register.h => interpreter/Register.h
2791             VM/RegisterFile.h => interpreter/RegisterFile.h
2792         
2793         
2794         * GNUmakefile.am:
2795         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2796         * JavaScriptCore.xcodeproj/project.pbxproj:
2797         * VM/ExceptionHelpers.h: Removed.
2798         * VM/Register.h: Removed.
2799         * VM/RegisterFile.h: Removed.
2800         * interpreter/Register.h: Copied from VM/Register.h.
2801         * interpreter/RegisterFile.h: Copied from VM/RegisterFile.h.
2802         * runtime/ExceptionHelpers.h: Copied from VM/ExceptionHelpers.h.
2803
2804 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2805
2806         Not reviewed.
2807         
2808         Try to fix Qt build.
2809
2810         * JavaScriptCore.pri:
2811
2812 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2813
2814         Reviewed by Sam Weinig.
2815         
2816         Moved VM/Machine.cpp => interpreter/Interpreter.cpp.
2817
2818         * DerivedSources.make:
2819         * GNUmakefile.am:
2820         * JavaScriptCore.pri:
2821         * JavaScriptCore.scons:
2822         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2823         * JavaScriptCore.xcodeproj/project.pbxproj:
2824         * JavaScriptCoreSources.bkl:
2825         * VM/Machine.cpp: Removed.
2826         * interpreter/Interpreter.cpp: Copied from VM/Machine.cpp.
2827
2828 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2829
2830         Reviewed by Sam Weinig.
2831         
2832         Moved VM/Machine.h => interpreter/Interpreter.h
2833
2834         * GNUmakefile.am:
2835         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2836         * JavaScriptCore.xcodeproj/project.pbxproj:
2837         * VM/CTI.cpp:
2838         * VM/CTI.h:
2839         * VM/ExceptionHelpers.cpp:
2840         * VM/Machine.cpp:
2841         * VM/Machine.h: Removed.
2842         * VM/SamplingTool.cpp:
2843         * bytecode/CodeBlock.cpp:
2844         * bytecompiler/BytecodeGenerator.cpp:
2845         * bytecompiler/BytecodeGenerator.h:
2846         * debugger/DebuggerCallFrame.cpp:
2847         * interpreter: Added.
2848         * interpreter/Interpreter.h: Copied from VM/Machine.h.
2849         * profiler/ProfileGenerator.cpp:
2850         * runtime/Arguments.h:
2851         * runtime/ArrayPrototype.cpp:
2852         * runtime/Collector.cpp:
2853         * runtime/Completion.cpp:
2854         * runtime/ExecState.h:
2855         * runtime/FunctionPrototype.cpp:
2856         * runtime/JSActivation.cpp:
2857         * runtime/JSFunction.cpp:
2858         * runtime/JSGlobalData.cpp:
2859         * runtime/JSGlobalObject.cpp:
2860         * runtime/JSGlobalObjectFunctions.cpp:
2861         * wrec/WREC.cpp:
2862
2863 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2864
2865         Reviewed by Sam Weinig.
2866         
2867         Moved runtime/Interpreter.cpp => runtime/Completion.cpp.
2868
2869         Moved functions from Interpreter.h to Completion.h, and removed
2870         Interpreter.h from the project.
2871
2872         * API/JSBase.cpp:
2873         * AllInOneFile.cpp:
2874         * GNUmakefile.am:
2875         * JavaScriptCore.pri:
2876         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2877         * JavaScriptCore.xcodeproj/project.pbxproj:
2878         * JavaScriptCoreSources.bkl:
2879         * jsc.cpp:
2880         * runtime/Completion.cpp: Copied from runtime/Interpreter.cpp.
2881         * runtime/Completion.h:
2882         * runtime/Interpreter.cpp: Removed.
2883         * runtime/Interpreter.h: Removed.
2884
2885 2008-11-17  Gabor Loki  <loki@inf.u-szeged.hu>
2886
2887         Reviewed by Darin Adler.
2888
2889         <https://bugs.webkit.org/show_bug.cgi?id=22312>
2890         Fix PCRE include path problem on Qt-port
2891
2892         * JavaScriptCore.pri:
2893         * pcre/pcre.pri:
2894
2895 2008-11-17  Gabor Loki  <loki@inf.u-szeged.hu>
2896
2897         Reviewed by Darin Adler.
2898
2899         <https://bugs.webkit.org/show_bug.cgi?id=22313>
2900         Add missing CTI source to the build system on Qt-port
2901
2902         * JavaScriptCore.pri:
2903
2904 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2905
2906         Not reviewed.
2907         
2908         Try to fix JSGlue build.
2909
2910         * JavaScriptCore.xcodeproj/project.pbxproj:
2911
2912 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2913
2914         Not reviewed.
2915         
2916         Try to fix Qt build.
2917
2918         * jsc.pro:
2919
2920 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2921
2922         Not reviewed.
2923         
2924         Try to fix Qt build.
2925
2926         * JavaScriptCore.pri:
2927
2928 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2929
2930         Not reviewed.
2931         
2932         Try to fix Qt build.
2933
2934         * JavaScriptCore.pri:
2935
2936 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2937
2938         Reviewed by Sam Weinig.
2939         
2940         More file moves:
2941         
2942         VM/CodeBlock.* => bytecode/CodeBlock.*
2943         VM/EvalCodeCache.h => bytecode/EvalCodeCache.h
2944         VM/Instruction.h => bytecode/Instruction.h
2945         VM/Opcode.* => bytecode/Opcode.*
2946
2947         * GNUmakefile.am:
2948         * JavaScriptCore.scons:
2949         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2950         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
2951         * JavaScriptCore.xcodeproj/project.pbxproj:
2952         * JavaScriptCoreSources.bkl:
2953         * VM/CodeBlock.cpp: Removed.
2954         * VM/CodeBlock.h: Removed.
2955         * VM/EvalCodeCache.h: Removed.
2956         * VM/Instruction.h: Removed.
2957         * VM/Opcode.cpp: Removed.
2958         * VM/Opcode.h: Removed.
2959         * bytecode: Added.
2960         * bytecode/CodeBlock.cpp: Copied from VM/CodeBlock.cpp.
2961         * bytecode/CodeBlock.h: Copied from VM/CodeBlock.h.
2962         * bytecode/EvalCodeCache.h: Copied from VM/EvalCodeCache.h.
2963         * bytecode/Instruction.h: Copied from VM/Instruction.h.
2964         * bytecode/Opcode.cpp: Copied from VM/Opcode.cpp.
2965         * bytecode/Opcode.h: Copied from VM/Opcode.h.
2966         * jsc.pro:
2967         * jscore.bkl:
2968
2969 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2970
2971         Not reviewed.
2972         
2973         Try to fix a few more builds.
2974
2975         * GNUmakefile.am:
2976         * JavaScriptCore.pri:
2977         * JavaScriptCore.scons:
2978         * JavaScriptCoreSources.bkl:
2979
2980 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2981
2982         Not reviewed.
2983         
2984         Try to fix gtk build.
2985
2986         * GNUmakefile.am:
2987
2988 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2989
2990         Not reviewed.
2991         
2992         Try to fix Windows build.
2993
2994         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
2995
2996 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
2997
2998         Reviewed by Sam Weinig.
2999         
3000         Some file moves:
3001         
3002         VM/LabelID.h => bytecompiler/Label.h
3003         VM/RegisterID.h => bytecompiler/RegisterID.h
3004         VM/SegmentedVector.h => bytecompiler/SegmentedVector.h
3005         bytecompiler/CodeGenerator.* => bytecompiler/BytecodeGenerator.*
3006
3007         * AllInOneFile.cpp:
3008         * JavaScriptCore.xcodeproj/project.pbxproj:
3009         * VM/LabelID.h: Removed.
3010         * VM/RegisterID.h: Removed.
3011         * VM/SegmentedVector.h: Removed.
3012         * bytecompiler/BytecodeGenerator.cpp: Copied from bytecompiler/CodeGenerator.cpp.
3013         * bytecompiler/BytecodeGenerator.h: Copied from bytecompiler/CodeGenerator.h.
3014         * bytecompiler/CodeGenerator.cpp: Removed.
3015         * bytecompiler/CodeGenerator.h: Removed.
3016         * bytecompiler/Label.h: Copied from VM/LabelID.h.
3017         * bytecompiler/LabelScope.h:
3018         * bytecompiler/RegisterID.h: Copied from VM/RegisterID.h.
3019         * bytecompiler/SegmentedVector.h: Copied from VM/SegmentedVector.h.
3020         * jsc.cpp:
3021         * parser/Nodes.cpp:
3022
3023 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
3024
3025         Not reviewed.
3026         
3027         Try to fix Windows build.
3028
3029         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3030
3031 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
3032
3033         Not reviewed.
3034         
3035         Try to fix Windows build.
3036
3037         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3038
3039 2008-11-17  Geoffrey Garen  <ggaren@apple.com>
3040
3041         Not reviewed.
3042         
3043         Try to fix Windows build.
3044
3045         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3046
3047 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3048
3049         Not reviewed.
3050         
3051         Try to fix Windows build.
3052
3053         * JavaScriptCore.vcproj/jsc/jsc.vcproj:
3054
3055 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3056
3057         Not reviewed.
3058         
3059         Try to fix Windows build.
3060
3061         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3062
3063 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3064
3065         Reviewed by Sam Weinig.
3066         
3067         Moved masm => assembler and split "AssemblerBuffer.h" out of "X86Assembler.h".
3068         
3069         Also renamed ENABLE_MASM to ENABLE_ASSEMBLER.
3070
3071         * GNUmakefile.am:
3072         * JavaScriptCore.xcodeproj/project.pbxproj:
3073         * assembler: Added.
3074         * assembler/AssemblerBuffer.h: Copied from masm/X86Assembler.h.
3075         (JSC::AssemblerBuffer::AssemblerBuffer):
3076         (JSC::AssemblerBuffer::~AssemblerBuffer):
3077         (JSC::AssemblerBuffer::ensureSpace):
3078         (JSC::AssemblerBuffer::isAligned):
3079         (JSC::AssemblerBuffer::putByteUnchecked):
3080         (JSC::AssemblerBuffer::putByte):
3081         (JSC::AssemblerBuffer::putShortUnchecked):
3082         (JSC::AssemblerBuffer::putShort):
3083         (JSC::AssemblerBuffer::putIntUnchecked):
3084         (JSC::AssemblerBuffer::putInt):
3085         (JSC::AssemblerBuffer::data):
3086         (JSC::AssemblerBuffer::size):
3087         (JSC::AssemblerBuffer::reset):
3088         (JSC::AssemblerBuffer::executableCopy):
3089         (JSC::AssemblerBuffer::grow):
3090         * assembler/X86Assembler.h: Copied from masm/X86Assembler.h.
3091         * masm: Removed.
3092         * masm/X86Assembler.h: Removed.
3093         * wtf/Platform.h:
3094
3095 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3096
3097         Not reviewed.
3098         
3099         Try to fix gtk build.
3100
3101         * GNUmakefile.am:
3102
3103 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3104
3105         Not reviewed.
3106         
3107         Fixed tyop.
3108
3109         * VM/CTI.cpp:
3110
3111 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3112
3113         Not reviewed.
3114         
3115         Try to fix windows build.
3116
3117         * VM/CTI.cpp:
3118
3119 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3120
3121         Not reviewed.
3122         
3123         Try to fix gtk build.
3124
3125         * GNUmakefile.am:
3126
3127 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3128
3129         Reviewed by Sam Weinig.
3130
3131         Renamed ENABLE_CTI and ENABLE(CTI) to ENABLE_JIT and ENABLE(JIT).
3132
3133         * VM/CTI.cpp:
3134         * VM/CTI.h:
3135         * VM/CodeBlock.cpp:
3136         (JSC::CodeBlock::~CodeBlock):
3137         * VM/CodeBlock.h:
3138         (JSC::CodeBlock::CodeBlock):
3139         * VM/Machine.cpp:
3140         (JSC::Interpreter::Interpreter):
3141         (JSC::Interpreter::initialize):
3142         (JSC::Interpreter::~Interpreter):
3143         (JSC::Interpreter::execute):
3144         (JSC::Interpreter::privateExecute):
3145         * VM/Machine.h:
3146         * bytecompiler/CodeGenerator.cpp:
3147         (JSC::prepareJumpTableForStringSwitch):
3148         * runtime/JSFunction.cpp:
3149         (JSC::JSFunction::~JSFunction):
3150         * runtime/JSGlobalData.h:
3151         * wrec/WREC.h:
3152         * wtf/Platform.h:
3153         * wtf/TCSystemAlloc.cpp:
3154
3155 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3156
3157         Not reviewed.
3158         
3159         Try to fix gtk build.
3160
3161         * VM/CTI.cpp:
3162
3163 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3164
3165         Reviewed by a few people on squirrelfish-dev.
3166         
3167         Renamed CTI => JIT.
3168
3169         * VM/CTI.cpp:
3170         (JSC::JIT::killLastResultRegister):
3171         (JSC::JIT::emitGetVirtualRegister):
3172         (JSC::JIT::emitGetVirtualRegisters):
3173         (JSC::JIT::emitPutCTIArgFromVirtualRegister):
3174         (JSC::JIT::emitPutCTIArg):
3175         (JSC::JIT::emitGetCTIArg):
3176         (JSC::JIT::emitPutCTIArgConstant):
3177         (JSC::JIT::getConstantImmediateNumericArg):
3178         (JSC::JIT::emitPutCTIParam):
3179         (JSC::JIT::emitGetCTIParam):
3180         (JSC::JIT::emitPutToCallFrameHeader):
3181         (JSC::JIT::emitGetFromCallFrameHeader):
3182         (JSC::JIT::emitPutVirtualRegister):
3183         (JSC::JIT::emitInitRegister):
3184         (JSC::JIT::printBytecodeOperandTypes):
3185         (JSC::JIT::emitAllocateNumber):
3186         (JSC::JIT::emitNakedCall):
3187         (JSC::JIT::emitNakedFastCall):
3188         (JSC::JIT::emitCTICall):
3189         (JSC::JIT::emitJumpSlowCaseIfNotJSCell):
3190         (JSC::JIT::linkSlowCaseIfNotJSCell):
3191         (JSC::JIT::emitJumpSlowCaseIfNotImmNum):
3192         (JSC::JIT::emitJumpSlowCaseIfNotImmNums):
3193         (JSC::JIT::getDeTaggedConstantImmediate):
3194         (JSC::JIT::emitFastArithDeTagImmediate):
3195         (JSC::JIT::emitFastArithDeTagImmediateJumpIfZero):
3196         (JSC::JIT::emitFastArithReTagImmediate):
3197         (JSC::JIT::emitFastArithPotentiallyReTagImmediate):
3198         (JSC::JIT::emitFastArithImmToInt):
3199         (JSC::JIT::emitFastArithIntToImmOrSlowCase):
3200         (JSC::JIT::emitFastArithIntToImmNoCheck):
3201         (JSC::JIT::emitArithIntToImmWithJump):
3202         (JSC::JIT::emitTagAsBoolImmediate):
3203         (JSC::JIT::JIT):
3204         (JSC::JIT::compileOpCallInitializeCallFrame):
3205         (JSC::JIT::compileOpCallSetupArgs):
3206         (JSC::JIT::compileOpCallEvalSetupArgs):
3207         (JSC::JIT::compileOpConstructSetupArgs):
3208         (JSC::JIT::compileOpCall):
3209         (JSC::JIT::compileOpStrictEq):
3210         (JSC::JIT::emitSlowScriptCheck):
3211         (JSC::JIT::putDoubleResultToJSNumberCellOrJSImmediate):
3212         (JSC::JIT::compileBinaryArithOp):
3213         (JSC::JIT::compileBinaryArithOpSlowCase):
3214         (JSC::JIT::privateCompileMainPass):
3215         (JSC::JIT::privateCompileLinkPass):
3216         (JSC::JIT::privateCompileSlowCases):
3217         (JSC::JIT::privateCompile):
3218         (JSC::JIT::privateCompileGetByIdSelf):
3219         (JSC::JIT::privateCompileGetByIdProto):
3220         (JSC::JIT::privateCompileGetByIdChain):
3221         (JSC::JIT::privateCompilePutByIdReplace):
3222         (JSC::JIT::privateCompilePutByIdTransition):
3223         (JSC::JIT::unlinkCall):
3224         (JSC::JIT::linkCall):
3225         (JSC::JIT::privateCompileCTIMachineTrampolines):
3226         (JSC::JIT::freeCTIMachineTrampolines):
3227         (JSC::JIT::patchGetByIdSelf):
3228         (JSC::JIT::patchPutByIdReplace):
3229         (JSC::JIT::privateCompilePatchGetArrayLength):
3230         (JSC::JIT::emitGetVariableObjectRegister):
3231         (JSC::JIT::emitPutVariableObjectRegister):
3232         * VM/CTI.h:
3233         (JSC::JIT::compile):
3234         (JSC::JIT::compileGetByIdSelf):
3235         (JSC::JIT::compileGetByIdProto):
3236         (JSC::JIT::compileGetByIdChain):
3237         (JSC::JIT::compilePutByIdReplace):
3238         (JSC::JIT::compilePutByIdTransition):
3239         (JSC::JIT::compileCTIMachineTrampolines):
3240         (JSC::JIT::compilePatchGetArrayLength):
3241         * VM/CodeBlock.cpp:
3242         (JSC::CodeBlock::unlinkCallers):
3243         * VM/Machine.cpp:
3244         (JSC::Interpreter::initialize):
3245         (JSC::Interpreter::~Interpreter):
3246         (JSC::Interpreter::execute):
3247         (JSC::Interpreter::tryCTICachePutByID):
3248         (JSC::Interpreter::tryCTICacheGetByID):
3249         (JSC::Interpreter::cti_op_call_JSFunction):
3250         (JSC::Interpreter::cti_vm_dontLazyLinkCall):
3251         (JSC::Interpreter::cti_vm_lazyLinkCall):
3252         * VM/Machine.h:
3253         * VM/RegisterFile.h:
3254         * parser/Nodes.h:
3255         * runtime/JSArray.h:
3256         * runtime/JSCell.h:
3257         * runtime/JSFunction.h:
3258         * runtime/JSImmediate.h:
3259         * runtime/JSNumberCell.h:
3260         * runtime/JSObject.h:
3261         * runtime/JSString.h:
3262         * runtime/JSVariableObject.h:
3263         * runtime/ScopeChain.h:
3264         * runtime/Structure.h:
3265         * runtime/TypeInfo.h:
3266         * runtime/UString.h:
3267
3268 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3269
3270         Not reviewed.
3271         
3272         Try to fix wx build.
3273
3274         * jscore.bkl:
3275
3276 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3277
3278         Reviewed by Sam Weinig.
3279
3280         Nixed X86:: and X86Assembler:: prefixes in a lot of places using typedefs.
3281
3282         * VM/CTI.cpp:
3283         (JSC::CTI::emitGetVirtualRegister):
3284         (JSC::CTI::emitGetVirtualRegisters):
3285         (JSC::CTI::emitPutCTIArgFromVirtualRegister):
3286         (JSC::CTI::emitPutCTIArg):
3287         (JSC::CTI::emitGetCTIArg):
3288         (JSC::CTI::emitPutCTIParam):
3289         (JSC::CTI::emitGetCTIParam):
3290         (JSC::CTI::emitPutToCallFrameHeader):
3291         (JSC::CTI::emitGetFromCallFrameHeader):
3292         (JSC::CTI::emitPutVirtualRegister):
3293         (JSC::CTI::emitNakedCall):
3294         (JSC::CTI::emitNakedFastCall):
3295         (JSC::CTI::emitCTICall):
3296         (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
3297         (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
3298         (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
3299         (JSC::CTI::emitFastArithDeTagImmediate):
3300         (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
3301         (JSC::CTI::emitFastArithReTagImmediate):
3302         (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
3303         (JSC::CTI::emitFastArithImmToInt):
3304         (JSC::CTI::emitFastArithIntToImmOrSlowCase):
3305         (JSC::CTI::emitFastArithIntToImmNoCheck):
3306         (JSC::CTI::emitArithIntToImmWithJump):
3307         (JSC::CTI::emitTagAsBoolImmediate):
3308         (JSC::CTI::compileOpCall):
3309         (JSC::CTI::compileOpStrictEq):
3310         (JSC::CTI::emitSlowScriptCheck):
3311         (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
3312         (JSC::CTI::compileBinaryArithOp):
3313         (JSC::CTI::compileBinaryArithOpSlowCase):
3314         (JSC::CTI::privateCompileMainPass):
3315         (JSC::CTI::privateCompileSlowCases):
3316         (JSC::CTI::privateCompile):
3317         (JSC::CTI::privateCompileGetByIdSelf):
3318         (JSC::CTI::privateCompileGetByIdProto):
3319         (JSC::CTI::privateCompileGetByIdChain):
3320         (JSC::CTI::privateCompilePutByIdReplace):
3321         (JSC::CTI::privateCompilePutByIdTransition):
3322         (JSC::CTI::privateCompileCTIMachineTrampolines):
3323         (JSC::CTI::privateCompilePatchGetArrayLength):
3324         (JSC::CTI::emitGetVariableObjectRegister):
3325         (JSC::CTI::emitPutVariableObjectRegister):
3326         * VM/CTI.h:
3327         (JSC::CallRecord::CallRecord):
3328         (JSC::JmpTable::JmpTable):
3329         (JSC::SlowCaseEntry::SlowCaseEntry):
3330         (JSC::CTI::JSRInfo::JSRInfo):
3331         * wrec/WREC.h:
3332
3333 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3334
3335         Not reviewed.
3336         
3337         Try to fix Qt build.
3338
3339         * JavaScriptCore.pri:
3340
3341 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3342
3343         Reviewed by Sam Weinig.
3344         
3345         Renamed OBJECT_OFFSET => FIELD_OFFSET
3346
3347         Nixed use of OBJECT_OFFSET outside of CTI.cpp by making CTI a friend in
3348         more places.
3349
3350         * VM/CTI.cpp:
3351         (JSC::CTI::compileOpCallInitializeCallFrame):
3352         (JSC::CTI::compileOpCall):
3353         (JSC::CTI::emitSlowScriptCheck):
3354         (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
3355         (JSC::CTI::compileBinaryArithOp):
3356         (JSC::CTI::privateCompileMainPass):
3357         (JSC::CTI::privateCompileSlowCases):
3358         (JSC::CTI::privateCompile):
3359         (JSC::CTI::privateCompileGetByIdSelf):
3360         (JSC::CTI::privateCompileGetByIdProto):
3361         (JSC::CTI::privateCompileGetByIdChain):
3362         (JSC::CTI::privateCompilePutByIdReplace):
3363         (JSC::CTI::privateCompilePutByIdTransition):
3364         (JSC::CTI::privateCompileCTIMachineTrampolines):
3365         (JSC::CTI::privateCompilePatchGetArrayLength):
3366         (JSC::CTI::emitGetVariableObjectRegister):
3367         (JSC::CTI::emitPutVariableObjectRegister):
3368         * runtime/JSValue.h:
3369         * runtime/JSVariableObject.h:
3370
3371 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3372
3373         Reviewed by Sam Weinig.
3374         
3375         Renames:
3376         
3377         X86Assembler::copy => X86Assembler::executableCopy
3378         AssemblerBuffer::copy => AssemblerBuffer::executableCopy
3379
3380         * VM/CTI.cpp:
3381         (JSC::CTI::privateCompile):
3382         (JSC::CTI::privateCompileGetByIdSelf):
3383         (JSC::CTI::privateCompileGetByIdProto):
3384         (JSC::CTI::privateCompileGetByIdChain):
3385         (JSC::CTI::privateCompilePutByIdReplace):
3386         (JSC::CTI::privateCompilePutByIdTransition):
3387         (JSC::CTI::privateCompileCTIMachineTrampolines):
3388         (JSC::CTI::privateCompilePatchGetArrayLength):
3389         * masm/X86Assembler.h:
3390         (JSC::AssemblerBuffer::executableCopy):
3391         (JSC::X86Assembler::executableCopy):
3392         * wrec/WREC.cpp:
3393         (JSC::WREC::compileRegExp):
3394
3395 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3396
3397         Reviewed by Sam Weinig.
3398         
3399         Renamed WREC => JSC::WREC, removing JSC:: prefix in a lot of places.
3400         Renamed WRECFunction => WREC::CompiledRegExp, and deployed this type
3401         name in place of a few casts.
3402
3403         * runtime/RegExp.cpp:
3404         (JSC::RegExp::RegExp):
3405         (JSC::RegExp::~RegExp):
3406         (JSC::RegExp::match):
3407         * runtime/RegExp.h:
3408         * wrec/CharacterClassConstructor.cpp:
3409         * wrec/CharacterClassConstructor.h:
3410         * wrec/WREC.cpp:
3411         (JSC::WREC::compileRegExp):
3412         * wrec/WREC.h:
3413         (JSC::WREC::Generator::Generator):
3414         (JSC::WREC::Parser::Parser):
3415         (JSC::WREC::Parser::parseAlternative):
3416
3417 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3418
3419         Reviewed by Sam Weinig.
3420         
3421         Renamed BytecodeInterpreter => Interpreter.
3422
3423         * JavaScriptCore.exp:
3424         * VM/CTI.cpp:
3425         (JSC::):
3426         (JSC::CTI::compileOpCall):
3427         (JSC::CTI::emitSlowScriptCheck):
3428         (JSC::CTI::compileBinaryArithOpSlowCase):
3429         (JSC::CTI::privateCompileMainPass):
3430         (JSC::CTI::privateCompileSlowCases):
3431         (JSC::CTI::privateCompile):
3432         (JSC::CTI::privateCompileGetByIdSelf):
3433         (JSC::CTI::privateCompileGetByIdProto):
3434         (JSC::CTI::privateCompileGetByIdChain):
3435         (JSC::CTI::privateCompilePutByIdReplace):
3436         (JSC::CTI::privateCompilePutByIdTransition):
3437         (JSC::CTI::privateCompileCTIMachineTrampolines):
3438         (JSC::CTI::freeCTIMachineTrampolines):
3439         (JSC::CTI::patchGetByIdSelf):
3440         (JSC::CTI::patchPutByIdReplace):
3441         (JSC::CTI::privateCompilePatchGetArrayLength):
3442         * VM/CTI.h:
3443         * VM/CodeBlock.cpp:
3444         (JSC::CodeBlock::printStructures):
3445         (JSC::CodeBlock::derefStructures):
3446         (JSC::CodeBlock::refStructures):
3447         * VM/Machine.cpp:
3448         (JSC::jsLess):
3449         (JSC::jsLessEq):
3450         (JSC::Interpreter::resolve):
3451         (JSC::Interpreter::resolveSkip):
3452         (JSC::Interpreter::resolveGlobal):
3453         (JSC::Interpreter::resolveBase):
3454         (JSC::Interpreter::resolveBaseAndProperty):
3455         (JSC::Interpreter::resolveBaseAndFunc):
3456         (JSC::Interpreter::slideRegisterWindowForCall):
3457         (JSC::Interpreter::callEval):
3458         (JSC::Interpreter::Interpreter):
3459         (JSC::Interpreter::initialize):
3460         (JSC::Interpreter::~Interpreter):
3461         (JSC::Interpreter::dumpCallFrame):
3462         (JSC::Interpreter::dumpRegisters):
3463         (JSC::Interpreter::isOpcode):
3464         (JSC::Interpreter::unwindCallFrame):
3465         (JSC::Interpreter::throwException):
3466         (JSC::Interpreter::execute):
3467         (JSC::Interpreter::debug):
3468         (JSC::Interpreter::resetTimeoutCheck):
3469         (JSC::Interpreter::checkTimeout):
3470         (JSC::Interpreter::createExceptionScope):
3471         (JSC::Interpreter::tryCachePutByID):
3472         (JSC::Interpreter::uncachePutByID):
3473         (JSC::Interpreter::tryCacheGetByID):
3474         (JSC::Interpreter::uncacheGetByID):
3475         (JSC::Interpreter::privateExecute):
3476         (JSC::Interpreter::retrieveArguments):
3477         (JSC::Interpreter::retrieveCaller):
3478         (JSC::Interpreter::retrieveLastCaller):
3479         (JSC::Interpreter::findFunctionCallFrame):
3480         (JSC::Interpreter::tryCTICachePutByID):
3481         (JSC::Interpreter::tryCTICacheGetByID):
3482         (JSC::Interpreter::cti_op_convert_this):
3483         (JSC::Interpreter::cti_op_end):
3484         (JSC::Interpreter::cti_op_add):
3485         (JSC::Interpreter::cti_op_pre_inc):
3486         (JSC::Interpreter::cti_timeout_check):
3487         (JSC::Interpreter::cti_register_file_check):
3488         (JSC::Interpreter::cti_op_loop_if_less):
3489         (JSC::Interpreter::cti_op_loop_if_lesseq):
3490         (JSC::Interpreter::cti_op_new_object):
3491         (JSC::Interpreter::cti_op_put_by_id):
3492         (JSC::Interpreter::cti_op_put_by_id_second):
3493         (JSC::Interpreter::cti_op_put_by_id_generic):
3494         (JSC::Interpreter::cti_op_put_by_id_fail):
3495         (JSC::Interpreter::cti_op_get_by_id):
3496         (JSC::Interpreter::cti_op_get_by_id_second):
3497         (JSC::Interpreter::cti_op_get_by_id_generic):
3498         (JSC::Interpreter::cti_op_get_by_id_fail):
3499         (JSC::Interpreter::cti_op_instanceof):
3500         (JSC::Interpreter::cti_op_del_by_id):
3501         (JSC::Interpreter::cti_op_mul):
3502         (JSC::Interpreter::cti_op_new_func):
3503         (JSC::Interpreter::cti_op_call_JSFunction):
3504         (JSC::Interpreter::cti_op_call_arityCheck):
3505         (JSC::Interpreter::cti_vm_dontLazyLinkCall):
3506         (JSC::Interpreter::cti_vm_lazyLinkCall):
3507         (JSC::Interpreter::cti_op_push_activation):
3508         (JSC::Interpreter::cti_op_call_NotJSFunction):
3509         (JSC::Interpreter::cti_op_create_arguments):
3510         (JSC::Interpreter::cti_op_create_arguments_no_params):
3511         (JSC::Interpreter::cti_op_tear_off_activation):
3512         (JSC::Interpreter::cti_op_tear_off_arguments):
3513         (JSC::Interpreter::cti_op_profile_will_call):
3514         (JSC::Interpreter::cti_op_profile_did_call):
3515         (JSC::Interpreter::cti_op_ret_scopeChain):
3516         (JSC::Interpreter::cti_op_new_array):
3517         (JSC::Interpreter::cti_op_resolve):
3518         (JSC::Interpreter::cti_op_construct_JSConstruct):
3519         (JSC::Interpreter::cti_op_construct_NotJSConstruct):
3520         (JSC::Interpreter::cti_op_get_by_val):
3521         (JSC::Interpreter::cti_op_resolve_func):
3522         (JSC::Interpreter::cti_op_sub):
3523         (JSC::Interpreter::cti_op_put_by_val):
3524         (JSC::Interpreter::cti_op_put_by_val_array):
3525         (JSC::Interpreter::cti_op_lesseq):
3526         (JSC::Interpreter::cti_op_loop_if_true):
3527         (JSC::Interpreter::cti_op_negate):
3528         (JSC::Interpreter::cti_op_resolve_base):
3529         (JSC::Interpreter::cti_op_resolve_skip):
3530         (JSC::Interpreter::cti_op_resolve_global):
3531         (JSC::Interpreter::cti_op_div):
3532         (JSC::Interpreter::cti_op_pre_dec):
3533         (JSC::Interpreter::cti_op_jless):
3534         (JSC::Interpreter::cti_op_not):
3535         (JSC::Interpreter::cti_op_jtrue):
3536         (JSC::Interpreter::cti_op_post_inc):
3537         (JSC::Interpreter::cti_op_eq):
3538         (JSC::Interpreter::cti_op_lshift):
3539         (JSC::Interpreter::cti_op_bitand):
3540         (JSC::Interpreter::cti_op_rshift):
3541         (JSC::Interpreter::cti_op_bitnot):
3542         (JSC::Interpreter::cti_op_resolve_with_base):
3543         (JSC::Interpreter::cti_op_new_func_exp):
3544         (JSC::Interpreter::cti_op_mod):
3545         (JSC::Interpreter::cti_op_less):
3546         (JSC::Interpreter::cti_op_neq):
3547         (JSC::Interpreter::cti_op_post_dec):
3548         (JSC::Interpreter::cti_op_urshift):
3549         (JSC::Interpreter::cti_op_bitxor):
3550         (JSC::Interpreter::cti_op_new_regexp):
3551         (JSC::Interpreter::cti_op_bitor):
3552         (JSC::Interpreter::cti_op_call_eval):
3553         (JSC::Interpreter::cti_op_throw):
3554         (JSC::Interpreter::cti_op_get_pnames):
3555         (JSC::Interpreter::cti_op_next_pname):
3556         (JSC::Interpreter::cti_op_push_scope):
3557         (JSC::Interpreter::cti_op_pop_scope):
3558         (JSC::Interpreter::cti_op_typeof):
3559         (JSC::Interpreter::cti_op_is_undefined):
3560         (JSC::Interpreter::cti_op_is_boolean):
3561         (JSC::Interpreter::cti_op_is_number):
3562         (JSC::Interpreter::cti_op_is_string):
3563         (JSC::Interpreter::cti_op_is_object):
3564         (JSC::Interpreter::cti_op_is_function):
3565         (JSC::Interpreter::cti_op_stricteq):
3566         (JSC::Interpreter::cti_op_nstricteq):
3567         (JSC::Interpreter::cti_op_to_jsnumber):
3568         (JSC::Interpreter::cti_op_in):
3569         (JSC::Interpreter::cti_op_push_new_scope):
3570         (JSC::Interpreter::cti_op_jmp_scopes):
3571         (JSC::Interpreter::cti_op_put_by_index):
3572         (JSC::Interpreter::cti_op_switch_imm):
3573         (JSC::Interpreter::cti_op_switch_char):
3574         (JSC::Interpreter::cti_op_switch_string):
3575         (JSC::Interpreter::cti_op_del_by_val):
3576         (JSC::Interpreter::cti_op_put_getter):
3577         (JSC::Interpreter::cti_op_put_setter):
3578         (JSC::Interpreter::cti_op_new_error):
3579         (JSC::Interpreter::cti_op_debug):
3580         (JSC::Interpreter::cti_vm_throw):
3581         * VM/Machine.h:
3582         * VM/Register.h:
3583         * VM/SamplingTool.h:
3584         (JSC::SamplingTool::SamplingTool):
3585         * bytecompiler/CodeGenerator.cpp:
3586         (JSC::BytecodeGenerator::generate):
3587         (JSC::BytecodeGenerator::BytecodeGenerator):
3588         * jsc.cpp:
3589         (runWithScripts):
3590         * runtime/ExecState.h:
3591         (JSC::ExecState::interpreter):
3592         * runtime/JSCell.h:
3593         * runtime/JSFunction.h:
3594         * runtime/JSGlobalData.cpp:
3595         (JSC::JSGlobalData::JSGlobalData):
3596         * runtime/JSGlobalData.h:
3597         * runtime/JSString.h:
3598         * wrec/WREC.cpp:
3599         (WREC::compileRegExp):
3600         * wrec/WREC.h:
3601
3602 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3603
3604         Roll out r38461 (my last patch) because it broke the world.
3605
3606 2008-11-16  Geoffrey Garen  <ggaren@apple.com>
3607
3608         Reviewed by Sam Weinig.
3609
3610         A few more renames:
3611
3612         BytecodeInterpreter => Interpreter
3613         WREC => JSC::WREC, removing JSC:: prefix in a lot of places
3614         X86Assembler::copy => X86Assembler::executableCopy
3615         AssemblerBuffer::copy => AssemblerBuffer::executableCopy
3616         WRECFunction => WREC::RegExpFunction
3617         OBJECT_OFFSET => FIELD_OFFSET
3618         
3619         Also:
3620
3621         Nixed use of OBJECT_OFFSET outside of CTI.cpp by making CTI a friend in more places.
3622         Nixed X86:: and X86Assembler:: prefixes in a lot of places using typedefs
3623
3624         * JavaScriptCore.exp:
3625         * VM/CTI.cpp:
3626         (JSC::):
3627         (JSC::CTI::emitGetVirtualRegister):
3628         (JSC::CTI::emitGetVirtualRegisters):
3629         (JSC::CTI::emitPutCTIArgFromVirtualRegister):
3630         (JSC::CTI::emitPutCTIArg):
3631         (JSC::CTI::emitGetCTIArg):
3632         (JSC::CTI::emitPutCTIParam):
3633         (JSC::CTI::emitGetCTIParam):
3634         (JSC::CTI::emitPutToCallFrameHeader):
3635         (JSC::CTI::emitGetFromCallFrameHeader):
3636         (JSC::CTI::emitPutVirtualRegister):
3637         (JSC::CTI::emitNakedCall):
3638         (JSC::CTI::emitNakedFastCall):
3639         (JSC::CTI::emitCTICall):
3640         (JSC::CTI::emitJumpSlowCaseIfNotJSCell):
3641         (JSC::CTI::emitJumpSlowCaseIfNotImmNum):
3642         (JSC::CTI::emitJumpSlowCaseIfNotImmNums):
3643         (JSC::CTI::emitFastArithDeTagImmediate):
3644         (JSC::CTI::emitFastArithDeTagImmediateJumpIfZero):
3645         (JSC::CTI::emitFastArithReTagImmediate):
3646         (JSC::CTI::emitFastArithPotentiallyReTagImmediate):
3647         (JSC::CTI::emitFastArithImmToInt):
3648         (JSC::CTI::emitFastArithIntToImmOrSlowCase):
3649         (JSC::CTI::emitFastArithIntToImmNoCheck):
3650         (JSC::CTI::emitArithIntToImmWithJump):
3651         (JSC::CTI::emitTagAsBoolImmediate):
3652         (JSC::CTI::compileOpCallInitializeCallFrame):
3653         (JSC::CTI::compileOpCall):
3654         (JSC::CTI::compileOpStrictEq):
3655         (JSC::CTI::emitSlowScriptCheck):
3656         (JSC::CTI::putDoubleResultToJSNumberCellOrJSImmediate):
3657         (JSC::CTI::compileBinaryArithOp):
3658         (JSC::CTI::compileBinaryArithOpSlowCase):
3659         (JSC::CTI::privateCompileMainPass):
3660         (JSC::CTI::privateCompileSlowCases):
3661         (JSC::CTI::privateCompile):
3662         (JSC::CTI::privateCompileGetByIdSelf):
3663         (JSC::CTI::privateCompileGetByIdProto):
3664         (JSC::CTI::privateCompileGetByIdChain):
3665         (JSC::CTI::privateCompilePutByIdReplace):
3666         (JSC::CTI::privateCompilePutByIdTransition):
3667         (JSC::CTI::privateCompileCTIMachineTrampolines):
3668         (JSC::CTI::freeCTIMachineTrampolines):
3669         (JSC::CTI::patchGetByIdSelf):
3670         (JSC::CTI::patchPutByIdReplace):
3671         (JSC::CTI::privateCompilePatchGetArrayLength):
3672         (JSC::CTI::emitGetVariableObjectRegister):
3673         (JSC::CTI::emitPutVariableObjectRegister):
3674         * VM/CTI.h:
3675         (JSC::CallRecord::CallRecord):
3676         (JSC::JmpTable::JmpTable):
3677         (JSC::SlowCaseEntry::SlowCaseEntry):
3678         (JSC::CTI::JSRInfo::JSRInfo):
3679         * VM/CodeBlock.cpp:
3680         (JSC::CodeBlock::printStructures):
3681         (JSC::CodeBlock::derefStructures):
3682         (JSC::CodeBlock::refStructures):
3683         * VM/Machine.cpp:
3684         (JSC::jsLess):
3685         (JSC::jsLessEq):
3686         (JSC::Interpreter::resolve):
3687         (JSC::Interpreter::resolveSkip):
3688         (JSC::Interpreter::resolveGlobal):
3689         (JSC::Interpreter::resolveBase):
3690         (JSC::Interpreter::resolveBaseAndProperty):
3691         (JSC::Interpreter::resolveBaseAndFunc):
3692         (JSC::Interpreter::slideRegisterWindowForCall):
3693         (JSC::Interpreter::callEval):
3694         (JSC::Interpreter::Interpreter):
3695         (JSC::Interpreter::initialize):
3696         (JSC::Interpreter::~Interpreter):
3697         (JSC::Interpreter::dumpCallFrame):
3698         (JSC::Interpreter::dumpRegisters):
3699         (JSC::Interpreter::isOpcode):
3700         (JSC::Interpreter::unwindCallFrame):
3701         (JSC::Interpreter::throwException):
3702         (JSC::Interpreter::execute):
3703         (JSC::Interpreter::debug):
3704         (JSC::Interpreter::resetTimeoutCheck):
3705         (JSC::Interpreter::checkTimeout):
3706         (JSC::Interpreter::createExceptionScope):
3707         (JSC::Interpreter::tryCachePutByID):
3708         (JSC::Interpreter::uncachePutByID):
3709         (JSC::Interpreter::tryCacheGetByID):
3710         (JSC::Interpreter::uncacheGetByID):
3711         (JSC::Interpreter::privateExecute):
3712         (JSC::Interpreter::retrieveArguments):
3713         (JSC::Interpreter::retrieveCaller):
3714         (JSC::Interpreter::retrieveLastCaller):
3715         (JSC::Interpreter::findFunctionCallFrame):
3716         (JSC::Interpreter::tryCTICachePutByID):
3717         (JSC::Interpreter::tryCTICacheGetByID):
3718         (JSC::):
3719         (JSC::Interpreter::cti_op_convert_this):
3720         (JSC::Interpreter::cti_op_end):
3721         (JSC::Interpreter::cti_op_add):
3722         (JSC::Interpreter::cti_op_pre_inc):
3723         (JSC::Interpreter::cti_timeout_check):
3724         (JSC::Interpreter::cti_register_file_check):
3725         (JSC::Interpreter::cti_op_loop_if_less):
3726         (JSC::Interpreter::cti_op_loop_if_lesseq):
3727         (JSC::Interpreter::cti_op_new_object):
3728         (JSC::Interpreter::cti_op_put_by_id):
3729         (JSC::Interpreter::cti_op_put_by_id_second):
3730         (JSC::Interpreter::cti_op_put_by_id_generic):
3731         (JSC::Interpreter::cti_op_put_by_id_fail):
3732         (JSC::Interpreter::cti_op_get_by_id):
3733         (JSC::Interpreter::cti_op_get_by_id_second):
3734         (JSC::Interpreter::cti_op_get_by_id_generic):
3735         (JSC::Interpreter::cti_op_get_by_id_fail):
3736         (JSC::Interpreter::cti_op_instanceof):
3737         (JSC::Interpreter::cti_op_del_by_id):
3738         (JSC::Interpreter::cti_op_mul):
3739         (JSC::Interpreter::cti_op_new_func):
3740         (JSC::Interpreter::cti_op_call_JSFunction):
3741         (JSC::Interpreter::cti_op_call_arityCheck):
3742         (JSC::Interpreter::cti_vm_dontLazyLinkCall):
3743         (JSC::Interpreter::cti_vm_lazyLinkCall):
3744         (JSC::Interpreter::cti_op_push_activation):
3745         (JSC::Interpreter::cti_op_call_NotJSFunction):
3746         (JSC::Interpreter::cti_op_create_arguments):
3747         (JSC::Interpreter::cti_op_create_arguments_no_params):
3748         (JSC::Interpreter::cti_op_tear_off_activation):
3749         (JSC::Interpreter::cti_op_tear_off_arguments):
3750         (JSC::Interpreter::cti_op_profile_will_call):
3751         (JSC::Interpreter::cti_op_profile_did_call):
3752         (JSC::Interpreter::cti_op_ret_scopeChain):
3753         (JSC::Interpreter::cti_op_new_array):
3754         (JSC::Interpreter::cti_op_resolve):
3755         (JSC::Interpreter::cti_op_construct_JSConstruct):
3756         (JSC::Interpreter::cti_op_construct_NotJSConstruct):
3757         (JSC::Interpreter::cti_op_get_by_val):
3758         (JSC::Interpreter::cti_op_resolve_func):
3759         (JSC::Interpreter::cti_op_sub):
3760         (JSC::Interpreter::cti_op_put_by_val):
3761         (JSC::Interpreter::cti_op_put_by_val_array):
3762         (JSC::Interpreter::cti_op_lesseq):
3763         (JSC::Interpreter::cti_op_loop_if_true):
3764         (JSC::Interpreter::cti_op_negate):
3765         (JSC::Interpreter::cti_op_resolve_base):
3766         (JSC::Interpreter::cti_op_resolve_skip):
3767         (JSC::Interpreter::cti_op_resolve_global):
3768         (JSC::Interpreter::cti_op_div):
3769         (JSC::Interpreter::cti_op_pre_dec):
3770         (JSC::Interpreter::cti_op_jless):
3771         (JSC::Interpreter::cti_op_not):
3772         (JSC::Interpreter::cti_op_jtrue):
3773         (JSC::Interpreter::cti_op_post_inc):
3774         (JSC::Interpreter::cti_op_eq):
3775         (JSC::Interpreter::cti_op_lshift):
3776         (JSC::Interpreter::cti_op_bitand):
3777         (JSC::Interpreter::cti_op_rshift):
3778         (JSC::Interpreter::cti_op_bitnot):
3779         (JSC::Interpreter::cti_op_resolve_with_base):
3780         (JSC::Interpreter::cti_op_new_func_exp):
3781         (JSC::Interpreter::cti_op_mod):
3782         (JSC::Interpreter::cti_op_less):
3783         (JSC::Interpreter::cti_op_neq):
3784         (JSC::Interpreter::cti_op_post_dec):
3785         (JSC::Interpreter::cti_op_urshift):
3786         (JSC::Interpreter::cti_op_bitxor):
3787         (JSC::Interpreter::cti_op_new_regexp):
3788         (JSC::Interpreter::cti_op_bitor):
3789         (JSC::Interpreter::cti_op_call_eval):
3790         (JSC::Interpreter::cti_op_throw):
3791         (JSC::Interpreter::cti_op_get_pnames):
3792         (JSC::Interpreter::cti_op_next_pname):
3793         (JSC::Interpreter::cti_op_push_scope):
3794         (JSC::Interpreter::cti_op_pop_scope):
3795         (JSC::Interpreter::cti_op_typeof):
3796         (JSC::Interpreter::cti_op_is_undefined):
3797         (JSC::Interpreter::cti_op_is_boolean):
3798         (JSC::Interpreter::cti_op_is_number):
3799         (JSC::Interpreter::cti_op_is_string):
3800         (JSC::Interpreter::cti_op_is_object):
3801         (JSC::Interpreter::cti_op_is_function):
3802         (JSC::Interpreter::cti_op_stricteq):
3803         (JSC::Interpreter::cti_op_nstricteq):
3804         (JSC::Interpreter::cti_op_to_jsnumber):
3805         (JSC::Interpreter::cti_op_in):
3806         (JSC::Interpreter::cti_op_push_new_scope):
3807         (JSC::Interpreter::cti_op_jmp_scopes):
3808         (JSC::Interpreter::cti_op_put_by_index):
3809         (JSC::Interpreter::cti_op_switch_imm):
3810         (JSC::Interpreter::cti_op_switch_char):
3811         (JSC::Interpreter::cti_op_switch_string):
3812         (JSC::Interpreter::cti_op_del_by_val):
3813         (JSC::Interpreter::cti_op_put_getter):
3814         (JSC::Interpreter::cti_op_put_setter):
3815         (JSC::Interpreter::cti_op_new_error):
3816         (JSC::Interpreter::cti_op_debug):
3817         (JSC::Interpreter::cti_vm_throw):
3818         * VM/Machine.h:
3819         * VM/Register.h:
3820         * VM/SamplingTool.cpp:
3821         (JSC::SamplingTool::dump):
3822         * VM/SamplingTool.h:
3823         (JSC::SamplingTool::SamplingTool):
3824         * bytecompiler/CodeGenerator.cpp:
3825         (JSC::BytecodeGenerator::generate):
3826         (JSC::BytecodeGenerator::BytecodeGenerator):
3827         * jsc.cpp:
3828         (runWithScripts):
3829         * masm/X86Assembler.h:
3830         (JSC::AssemblerBuffer::executableCopy):
3831         (JSC::X86Assembler::executableCopy):
3832         * runtime/ExecState.h:
3833         (JSC::ExecState::interpreter):
3834         * runtime/JSCell.h:
3835         * runtime/JSFunction.h:
3836         * runtime/JSGlobalData.cpp:
3837         (JSC::JSGlobalData::JSGlobalData):
3838         * runtime/JSGlobalData.h:
3839         * runtime/JSImmediate.h:
3840         * runtime/JSString.h:
3841         * runtime/JSValue.h:
3842         * runtime/JSVariableObject.h:
3843         * runtime/RegExp.cpp:
3844         (JSC::RegExp::RegExp):
3845         (JSC::RegExp::~RegExp):
3846         (JSC::RegExp::match):
3847         * runtime/RegExp.h:
3848         * wrec/CharacterClassConstructor.cpp:
3849         * wrec/CharacterClassConstructor.h:
3850         * wrec/WREC.cpp:
3851         (JSC::WREC::compileRegExp):
3852         * wrec/WREC.h:
3853         (JSC::WREC::Generator::Generator):
3854         (JSC::WREC::Parser::):
3855         (JSC::WREC::Parser::Parser):
3856         (JSC::WREC::Parser::parseAlternative):
3857
3858 2008-11-16  Greg Bolsinga  <bolsinga@apple.com>
3859
3860         Reviewed by Darin Adler.
3861
3862         https://bugs.webkit.org/show_bug.cgi?id=21810
3863         Remove use of static C++ objects that are destroyed at exit time (destructors)
3864
3865         Conditionally have the DEFINE_STATIC_LOCAL workaround <rdar://problem/6354696> 
3866         (Codegen issue with C++ static reference in gcc build 5465) based upon the compiler 
3867         build versions. It will use the:
3868         static T& = *new T;
3869         style for all other compilers.
3870
3871         * wtf/StdLibExtras.h:
3872
3873 2008-11-16  Alexey Proskuryakov  <ap@webkit.org>
3874
3875         Reviewed by Dan Bernstein.
3876
3877         https://bugs.webkit.org/show_bug.cgi?id=22290
3878         Remove cross-heap GC and MessagePort multi-threading support
3879
3880         It is broken (and may not be implementable at all), and no longer needed, as we
3881         don't use MessagePorts for communication with workers any more.
3882
3883         * JavaScriptCore.exp:
3884         * runtime/Collector.cpp:
3885         (JSC::Heap::collect):
3886         * runtime/JSGlobalObject.cpp:
3887         * runtime/JSGlobalObject.h:
3888         Remove hooks for cross-heap GC.
3889
3890 2008-11-15  Sam Weinig  <sam@webkit.org>
3891
3892         Reviewed by Cameron Zwarich.
3893
3894         Cleanup jsc command line code a little.
3895
3896         * jsc.cpp:
3897         (functionQuit):
3898         (main): Use standard exit status macros
3899         (cleanupGlobalData): Factor out cleanup code into this function.
3900         (printUsageStatement): Use standard exit status macros.
3901
3902 2008-11-15  Sam Weinig  <sam@webkit.org>
3903
3904         Reviewed by Cameron Zwarich.
3905
3906         Cleanup BytecodeGenerator constructors.
3907
3908         * bytecompiler/CodeGenerator.cpp:
3909         (JSC::BytecodeGenerator::BytecodeGenerator):
3910         * bytecompiler/CodeGenerator.h:
3911         * parser/Nodes.cpp:
3912         (JSC::ProgramNode::generateBytecode):
3913
3914 2008-11-15  Darin Adler  <darin@apple.com>
3915
3916         Rubber stamped by Geoff Garen.
3917
3918         - do the long-planned StructureID -> Structure rename
3919
3920         * API/JSCallbackConstructor.cpp:
3921         (JSC::JSCallbackConstructor::JSCallbackConstructor):
3922         * API/JSCallbackConstructor.h:
3923         (JSC::JSCallbackConstructor::createStructure):
3924         * API/JSCallbackFunction.h:
3925         (JSC::JSCallbackFunction::createStructure):
3926         * API/JSCallbackObject.h:
3927         (JSC::JSCallbackObject::createStructure):
3928         * API/JSCallbackObjectFunctions.h:
3929         (JSC::::JSCallbackObject):
3930         * API/JSValueRef.cpp:
3931         (JSValueIsInstanceOfConstructor):
3932         * GNUmakefile.am:
3933         * JavaScriptCore.exp:
3934         * JavaScriptCore.pri:
3935         * JavaScriptCore.scons:
3936         * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
3937         * JavaScriptCore.xcodeproj/project.pbxproj:
3938         * JavaScriptCoreSources.bkl:
3939         * VM/CTI.cpp:
3940         (JSC::CTI::compileBinaryArithOp):
3941         (JSC::CTI::privateCompileMainPass):
3942         (JSC::CTI::privateCompileGetByIdSelf):
3943         (JSC::CTI::privateCompileGetByIdProto):
3944         (JSC::CTI::privateCompileGetByIdChain):
3945         (JSC::CTI::privateCompilePutByIdReplace):
3946         (JSC::transitionWillNeedStorageRealloc):
3947         (JSC::CTI::privateCompilePutByIdTransition):
3948         (JSC::CTI::patchGetByIdSelf):
3949         (JSC::CTI::patchPutByIdReplace):
3950         * VM/CTI.h:
3951         (JSC::CTI::compileGetByIdSelf):
3952         (JSC::CTI::compileGetByIdProto):
3953         (JSC::CTI::compileGetByIdChain):
3954         (JSC::CTI::compilePutByIdReplace):
3955         (JSC::CTI::compilePutByIdTransition):
3956         * VM/CodeBlock.cpp:
3957         (JSC::CodeBlock::printStructure):
3958         (JSC::CodeBlock::printStructures):
3959         (JSC::CodeBlock::dump):
3960         (JSC::CodeBlock::~CodeBlock):
3961         (JSC::CodeBlock::derefStructures):
3962         (JSC::CodeBlock::refStructures):
3963         * VM/CodeBlock.h:
3964         * VM/Instruction.h:
3965         (JSC::Instruction::Instruction):
3966         (JSC::Instruction::):
3967         * VM/Machine.cpp:
3968         (JSC::jsTypeStringForValue):
3969         (JSC::jsIsObjectType):
3970         (JSC::BytecodeInterpreter::resolveGlobal):
3971         (JSC::BytecodeInterpreter::BytecodeInterpreter):
3972         (JSC::cachePrototypeChain):
3973         (JSC::BytecodeInterpreter::tryCachePutByID):
3974         (JSC::BytecodeInterpreter::uncachePutByID):
3975         (JSC::BytecodeInterpreter::tryCacheGetByID):
3976         (JSC::BytecodeInterpreter::uncacheGetByID):
3977         (JSC::BytecodeInterpreter::privateExecute):
3978         (JSC::BytecodeInterpreter::tryCTICachePutByID):
3979         (JSC::BytecodeInterpreter::tryCTICacheGetByID):
3980         (JSC::BytecodeInterpreter::cti_op_instanceof):
3981         (JSC::BytecodeInterpreter::cti_op_construct_JSConstruct):
3982         (JSC::BytecodeInterpreter::cti_op_resolve_global):
3983         (JSC::BytecodeInterpreter::cti_op_is_undefined):
3984         * runtime/Arguments.h:
3985         (JSC::Arguments::createStructure):
3986         * runtime/ArrayConstructor.cpp:
3987         (JSC::ArrayConstructor::ArrayConstructor):
3988         * runtime/ArrayConstructor.h:
3989         * runtime/ArrayPrototype.cpp:
3990         (JSC::ArrayPrototype::ArrayPrototype):
3991         * runtime/ArrayPrototype.h:
3992         * runtime/BatchedTransitionOptimizer.h:
3993         (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer):
3994         (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer):
3995         * runtime/BooleanConstructor.cpp:
3996         (JSC::BooleanConstructor::BooleanConstructor):
3997         * runtime/BooleanConstructor.h:
3998         * runtime/BooleanObject.cpp:
3999         (JSC::BooleanObject::BooleanObject):
4000         * runtime/BooleanObject.h:
4001         * runtime/BooleanPrototype.cpp:
4002         (JSC::BooleanPrototype::BooleanPrototype):
4003         * runtime/BooleanPrototype.h:
4004         * runtime/DateConstructor.cpp:
4005         (JSC::DateConstructor::DateConstructor):
4006         * runtime/DateConstructor.h:
4007         * runtime/DateInstance.cpp:
4008         (JSC::DateInstance::DateInstance):
4009         * runtime/DateInstance.h:
4010         * runtime/DatePrototype.cpp:
4011         (JSC::DatePrototype::DatePrototype):
4012         * runtime/DatePrototype.h:
4013         (JSC::DatePrototype::createStructure):
4014         * runtime/ErrorConstructor.cpp:
4015         (JSC::ErrorConstructor::ErrorConstructor):
4016         * runtime/ErrorConstructor.h:
4017         * runtime/ErrorInstance.cpp:
4018         (JSC::ErrorInstance::ErrorInstance):
4019         * runtime/ErrorInstance.h:
4020         * runtime/ErrorPrototype.cpp:
4021         (JSC::ErrorPrototype::ErrorPrototype):
4022         * runtime/ErrorPrototype.h:
4023         * runtime/FunctionConstructor.cpp:
4024         (JSC::FunctionConstructor::FunctionConstructor):
4025         * runtime/FunctionConstructor.h:
4026         * runtime/FunctionPrototype.cpp:
4027         (JSC::FunctionPrototype::FunctionPrototype):
4028         (JSC::FunctionPrototype::addFunctionProperties):
4029         * runtime/FunctionPrototype.h:
4030         (JSC::FunctionPrototype::createStructure):
4031         * runtime/GlobalEvalFunction.cpp:
4032         (JSC::GlobalEvalFunction::GlobalEvalFunction):
4033         * runtime/GlobalEvalFunction.h:
4034         * runtime/Identifier.h:
4035         * runtime/InternalFunction.cpp:
4036         (JSC::InternalFunction::InternalFunction):
4037         * runtime/InternalFunction.h:
4038         (JSC::InternalFunction::createStructure):
4039         (JSC::InternalFunction::InternalFunction):
4040         * runtime/JSActivation.cpp:
4041         (JSC::JSActivation::JSActivation):
4042         * runtime/JSActivation.h:
4043         (JSC::JSActivation::createStructure):
4044         * runtime/JSArray.cpp:
4045         (JSC::JSArray::JSArray):
4046         * runtime/JSArray.h:
4047         (JSC::JSArray::createStructure):
4048         * runtime/JSCell.h:
4049         (JSC::JSCell::JSCell):
4050         (JSC::JSCell::isObject):
4051         (JSC::JSCell::isString):
4052         (JSC::JSCell::structure):
4053         (JSC::JSValue::needsThisConversion):
4054         * runtime/JSFunction.cpp:
4055         (JSC::JSFunction::construct):
4056         * runtime/JSFunction.h:
4057         (JSC::JSFunction::JSFunction):
4058         (JSC::JSFunction::createStructure):
4059         * runtime/JSGlobalData.cpp:
4060         (JSC::JSGlobalData::JSGlobalData):
4061         (JSC::JSGlobalData::createLeaked):
4062         * runtime/JSGlobalData.h:
4063         * runtime/JSGlobalObject.cpp:
4064         (JSC::markIfNeeded):
4065         (JSC::JSGlobalObject::reset):
4066         * runtime/JSGlobalObject.h:
4067         (JSC::JSGlobalObject::JSGlobalObject):
4068         (JSC::JSGlobalObject::argumentsStructure):
4069         (JSC::JSGlobalObject::arrayStructure):
4070         (JSC::JSGlobalObject::booleanObjectStructure):
4071         (JSC::JSGlobalObject::callbackConstructorStructure):
4072         (JSC::JSGlobalObject::callbackFunctionStructure):
4073         (JSC::JSGlobalObject::callbackObjectStructure):
4074         (JSC::JSGlobalObject::dateStructure):
4075         (JSC::JSGlobalObject::emptyObjectStructure):
4076         (JSC::JSGlobalObject::errorStructure):
4077         (JSC::JSGlobalObject::functionStructure):
4078         (JSC::JSGlobalObject::numberObjectStructure):
4079         (JSC::JSGlobalObject::prototypeFunctionStructure):
4080         (JSC::JSGlobalObject::regExpMatchesArrayStructure):
4081         (JSC::JSGlobalObject::regExpStructure):
4082         (JSC::JSGlobalObject::stringObjectStructure):
4083         (JSC::JSGlobalObject::createStructure):
4084         (JSC::Structure::prototypeForLookup):
4085         * runtime/JSNotAnObject.h:
4086         (JSC::JSNotAnObject::createStructure):
4087         * runtime/JSNumberCell.h:
4088         (JSC::JSNumberCell::createStructure):
4089         (JSC::JSNumberCell::JSNumberCell):
4090         * runtime/JSObject.cpp:
4091         (JSC::JSObject::mark):
4092         (JSC::JSObject::put):
4093         (JSC::JSObject::deleteProperty):
4094         (JSC::JSObject::defineGetter):
4095         (JSC::JSObject::defineSetter):
4096         (JSC::JSObject::getPropertyAttributes):
4097         (JSC::JSObject::getPropertyNames):
4098         (JSC::JSObject::removeDirect):
4099         (JSC::JSObject::createInheritorID):
4100         * runtime/JSObject.h:
4101         (JSC::JSObject::getDirect):
4102         (JSC::JSObject::getDirectLocation):
4103         (JSC::JSObject::hasCustomProperties):
4104         (JSC::JSObject::hasGetterSetterProperties):
4105         (JSC::JSObject::createStructure):
4106         (JSC::JSObject::JSObject):
4107         (JSC::JSObject::~JSObject):
4108         (JSC::JSObject::prototype):
4109         (JSC::JSObject::setPrototype):
4110         (JSC::JSObject::setStructure):
4111         (JSC::JSObject::inheritorID):
4112         (JSC::JSObject::inlineGetOwnPropertySlot):
4113         (JSC::JSObject::getOwnPropertySlotForWrite):
4114         (JSC::JSCell::fastGetOwnPropertySlot):
4115         (JSC::JSObject::putDirect):
4116         (JSC::JSObject::putDirectWithoutTransition):
4117         (JSC::JSObject::transitionTo):
4118         * runtime/JSPropertyNameIterator.h:
4119         (JSC::JSPropertyNameIterator::next):
4120         * runtime/JSStaticScopeObject.h:
4121         (JSC::JSStaticScopeObject::JSStaticScopeObject):
4122         (JSC::JSStaticScopeObject::createStructure):
4123         * runtime/JSString.h:
4124         (JSC::JSString::JSString):
4125         (JSC::JSString::createStructure):
4126         * runtime/JSVariableObject.h:
4127         (JSC::JSVariableObject::JSVariableObject):
4128         * runtime/JSWrapperObject.h:
4129         (JSC::JSWrapperObject::JSWrapperObject):
4130         * runtime/MathObject.cpp:
4131         (JSC::MathObject::MathObject):
4132         * runtime/MathObject.h:
4133         (JSC::MathObject::createStructure):
4134         * runtime/NativeErrorConstructor.cpp:
4135         (JSC::NativeErrorConstructor::NativeErrorConstructor):
4136         * runtime/NativeErrorConstructor.h:
4137         * runtime/NativeErrorPrototype.cpp:
4138         (JSC::NativeErrorPrototype::NativeErrorPrototype):
4139         * runtime/NativeErrorPrototype.h:
4140         * runtime/NumberConstructor.cpp:
4141         (JSC::NumberConstructor::NumberConstructor):
4142         * runtime/NumberConstructor.h:
4143         (JSC::NumberConstructor::createStructure):
4144         * runtime/NumberObject.cpp:
4145         (JSC::NumberObject::NumberObject):
4146         * runtime/NumberObject.h:
4147         * runtime/NumberPrototype.cpp:
4148         (JSC::NumberPrototype::NumberPrototype):
4149         * runtime/NumberPrototype.h:
4150         * runtime/ObjectConstructor.cpp:
4151         (JSC::ObjectConstructor::ObjectConstructor):
4152         * runtime/ObjectConstructor.h:
4153         * runtime/ObjectPrototype.cpp:
4154         (JSC::ObjectPrototype::ObjectPrototype):
4155         * runtime/ObjectPrototype.h:
4156         * runtime/Operations.h:
4157         (JSC::equalSlowCaseInline):
4158         * runtime/PropertyNameArray.h:
4159         (JSC::PropertyNameArrayData::setCachedStructure):
4160         (JSC::PropertyNameArrayData::cachedStructure):
4161         (JSC::PropertyNameArrayData::setCachedPrototypeChain):
4162         (JSC::PropertyNameArrayData::cachedPrototypeChain):
4163         (JSC::PropertyNameArrayData::PropertyNameArrayData):
4164         * runtime/PrototypeFunction.cpp:
4165         (JSC::PrototypeFunction::PrototypeFunction):
4166         * runtime/PrototypeFunction.h:
4167         * runtime/RegExpConstructor.cpp:
4168         (JSC::RegExpConstructor::RegExpConstructor):
4169         * runtime/RegExpConstructor.h:
4170         (JSC::RegExpConstructor::createStructure):
4171         * runtime/RegExpObject.cpp:
4172         (JSC::RegExpObject::RegExpObject):
4173         * runtime/RegExpObject.h:
4174         (JSC::RegExpObject::createStructure):
4175         * runtime/RegExpPrototype.cpp:
4176         (JSC::RegExpPrototype::RegExpPrototype):
4177         * runtime/RegExpPrototype.h:
4178         * runtime/StringConstructor.cpp:
4179         (JSC::StringConstructor::StringConstructor):
4180         * runtime/StringConstructor.h:
4181         * runtime/StringObject.cpp:
4182         (JSC::StringObject::StringObject):
4183         * runtime/StringObject.h:
4184         (JSC::StringObject::createStructure):
4185         * runtime/StringObjectThatMasqueradesAsUndefined.h:
4186         (JSC::StringObjectThatMasqueradesAsUndefined::create):
4187         (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined):
4188         (JSC::StringObjectThatMasqueradesAsUndefined::createStructure):
4189         * runtime/StringPrototype.cpp:
4190         (JSC::StringPrototype::StringPrototype):