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