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