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