OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 JIT jit(globalData, codeBlock); | 356 JIT jit(globalData, codeBlock); |
357 jit.privateCompilePutByIdReplace(stubInfo, structure, cachedOffset,
returnAddress); | 357 jit.privateCompilePutByIdReplace(stubInfo, structure, cachedOffset,
returnAddress); |
358 } | 358 } |
359 | 359 |
360 static void compilePutByIdTransition(JSGlobalData* globalData, CodeBlock
* codeBlock, StructureStubInfo* stubInfo, Structure* oldStructure, Structure* ne
wStructure, size_t cachedOffset, StructureChain* chain, ProcessorReturnAddress r
eturnAddress) | 360 static void compilePutByIdTransition(JSGlobalData* globalData, CodeBlock
* codeBlock, StructureStubInfo* stubInfo, Structure* oldStructure, Structure* ne
wStructure, size_t cachedOffset, StructureChain* chain, ProcessorReturnAddress r
eturnAddress) |
361 { | 361 { |
362 JIT jit(globalData, codeBlock); | 362 JIT jit(globalData, codeBlock); |
363 jit.privateCompilePutByIdTransition(stubInfo, oldStructure, newStruc
ture, cachedOffset, chain, returnAddress); | 363 jit.privateCompilePutByIdTransition(stubInfo, oldStructure, newStruc
ture, cachedOffset, chain, returnAddress); |
364 } | 364 } |
365 | 365 |
366 static void compileCTIMachineTrampolines(JSGlobalData* globalData) | 366 static void compileCTIMachineTrampolines(JSGlobalData* globalData, RefPt
r<ExecutablePool>* executablePool, void** ctiArrayLengthTrampoline, void** ctiSt
ringLengthTrampoline, void** ctiVirtualCallPreLink, void** ctiVirtualCallLink, v
oid** ctiVirtualCall) |
| 367 |
367 { | 368 { |
368 JIT jit(globalData); | 369 JIT jit(globalData); |
369 jit.privateCompileCTIMachineTrampolines(); | 370 jit.privateCompileCTIMachineTrampolines(executablePool, ctiArrayLeng
thTrampoline, ctiStringLengthTrampoline, ctiVirtualCallPreLink, ctiVirtualCallLi
nk, ctiVirtualCall); |
370 } | 371 } |
371 | 372 |
372 static void patchGetByIdSelf(StructureStubInfo*, Structure*, size_t cach
edOffset, ProcessorReturnAddress returnAddress); | 373 static void patchGetByIdSelf(StructureStubInfo*, Structure*, size_t cach
edOffset, ProcessorReturnAddress returnAddress); |
373 static void patchPutByIdReplace(StructureStubInfo*, Structure*, size_t c
achedOffset, ProcessorReturnAddress returnAddress); | 374 static void patchPutByIdReplace(StructureStubInfo*, Structure*, size_t c
achedOffset, ProcessorReturnAddress returnAddress); |
374 | 375 |
375 static void compilePatchGetArrayLength(JSGlobalData* globalData, CodeBlo
ck* codeBlock, ProcessorReturnAddress returnAddress) | 376 static void compilePatchGetArrayLength(JSGlobalData* globalData, CodeBlo
ck* codeBlock, ProcessorReturnAddress returnAddress) |
376 { | 377 { |
377 JIT jit(globalData, codeBlock); | 378 JIT jit(globalData, codeBlock); |
378 return jit.privateCompilePatchGetArrayLength(returnAddress); | 379 return jit.privateCompilePatchGetArrayLength(returnAddress); |
379 } | 380 } |
(...skipping 12 matching lines...) Expand all Loading... |
392 void privateCompileGetByIdProto(StructureStubInfo*, Structure*, Structur
e* prototypeStructure, size_t cachedOffset, ProcessorReturnAddress returnAddress
, CallFrame* callFrame); | 393 void privateCompileGetByIdProto(StructureStubInfo*, Structure*, Structur
e* prototypeStructure, size_t cachedOffset, ProcessorReturnAddress returnAddress
, CallFrame* callFrame); |
393 #if USE(CTI_REPATCH_PIC) | 394 #if USE(CTI_REPATCH_PIC) |
394 void privateCompileGetByIdSelfList(StructureStubInfo*, PolymorphicAccess
StructureList*, int, Structure*, size_t cachedOffset); | 395 void privateCompileGetByIdSelfList(StructureStubInfo*, PolymorphicAccess
StructureList*, int, Structure*, size_t cachedOffset); |
395 void privateCompileGetByIdProtoList(StructureStubInfo*, PolymorphicAcces
sStructureList*, int, Structure*, Structure* prototypeStructure, size_t cachedOf
fset, CallFrame* callFrame); | 396 void privateCompileGetByIdProtoList(StructureStubInfo*, PolymorphicAcces
sStructureList*, int, Structure*, Structure* prototypeStructure, size_t cachedOf
fset, CallFrame* callFrame); |
396 void privateCompileGetByIdChainList(StructureStubInfo*, PolymorphicAcces
sStructureList*, int, Structure*, StructureChain* chain, size_t count, size_t ca
chedOffset, CallFrame* callFrame); | 397 void privateCompileGetByIdChainList(StructureStubInfo*, PolymorphicAcces
sStructureList*, int, Structure*, StructureChain* chain, size_t count, size_t ca
chedOffset, CallFrame* callFrame); |
397 #endif | 398 #endif |
398 void privateCompileGetByIdChain(StructureStubInfo*, Structure*, Structur
eChain*, size_t count, size_t cachedOffset, ProcessorReturnAddress returnAddress
, CallFrame* callFrame); | 399 void privateCompileGetByIdChain(StructureStubInfo*, Structure*, Structur
eChain*, size_t count, size_t cachedOffset, ProcessorReturnAddress returnAddress
, CallFrame* callFrame); |
399 void privateCompilePutByIdReplace(StructureStubInfo*, Structure*, size_t
cachedOffset, ProcessorReturnAddress returnAddress); | 400 void privateCompilePutByIdReplace(StructureStubInfo*, Structure*, size_t
cachedOffset, ProcessorReturnAddress returnAddress); |
400 void privateCompilePutByIdTransition(StructureStubInfo*, Structure*, Str
ucture*, size_t cachedOffset, StructureChain*, ProcessorReturnAddress returnAddr
ess); | 401 void privateCompilePutByIdTransition(StructureStubInfo*, Structure*, Str
ucture*, size_t cachedOffset, StructureChain*, ProcessorReturnAddress returnAddr
ess); |
401 | 402 |
402 void privateCompileCTIMachineTrampolines(); | 403 void privateCompileCTIMachineTrampolines(RefPtr<ExecutablePool>* executa
blePool, void** ctiArrayLengthTrampoline, void** ctiStringLengthTrampoline, void
** ctiVirtualCallPreLink, void** ctiVirtualCallLink, void** ctiVirtualCall); |
403 void privateCompilePatchGetArrayLength(ProcessorReturnAddress returnAddr
ess); | 404 void privateCompilePatchGetArrayLength(ProcessorReturnAddress returnAddr
ess); |
404 | 405 |
405 void addSlowCase(Jump); | 406 void addSlowCase(Jump); |
406 void addJump(Jump, int); | 407 void addJump(Jump, int); |
407 void emitJumpSlowToHot(Jump, int); | 408 void emitJumpSlowToHot(Jump, int); |
408 | 409 |
409 void compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ide
nt, unsigned propertyAccessInstructionIndex); | 410 void compileGetByIdHotPath(int resultVReg, int baseVReg, Identifier* ide
nt, unsigned propertyAccessInstructionIndex); |
410 void compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* id
ent, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIn
dex); | 411 void compileGetByIdSlowCase(int resultVReg, int baseVReg, Identifier* id
ent, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionIn
dex); |
411 void compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVRe
g, unsigned propertyAccessInstructionIndex); | 412 void compilePutByIdHotPath(int baseVReg, Identifier* ident, int valueVRe
g, unsigned propertyAccessInstructionIndex); |
412 void compilePutByIdSlowCase(int baseVReg, Identifier* ident, int valueVR
eg, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionInd
ex); | 413 void compilePutByIdSlowCase(int baseVReg, Identifier* ident, int valueVR
eg, Vector<SlowCaseEntry>::iterator& iter, unsigned propertyAccessInstructionInd
ex); |
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 int m_lastResultBytecodeRegister; | 592 int m_lastResultBytecodeRegister; |
592 unsigned m_jumpTargetsPosition; | 593 unsigned m_jumpTargetsPosition; |
593 }; | 594 }; |
594 } | 595 } |
595 | 596 |
596 #endif // ENABLE(JIT) | 597 #endif // ENABLE(JIT) |
597 | 598 |
598 #endif // JIT_h | 599 #endif // JIT_h |
599 | 600 |
600 | 601 |
OLD | NEW |