Changeset 56759 in webkit for trunk/JavaScriptCore/jit/JITStubs.cpp
- Timestamp:
- Mar 29, 2010, 7:59:20 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITStubs.cpp
r56000 r56759 481 481 #define PRESERVEDR4_OFFSET 36 482 482 483 #elif CPU(MIPS) 484 485 #if USE(JIT_STUB_ARGUMENT_VA_LIST) 486 #error "JIT_STUB_ARGUMENT_VA_LIST not supported on MIPS." 487 #endif 488 489 asm volatile( 490 ".text" "\n" 491 ".align 2" "\n" 492 ".set noreorder" "\n" 493 ".set nomacro" "\n" 494 ".set nomips16" "\n" 495 ".globl " SYMBOL_STRING(ctiTrampoline) "\n" 496 ".ent " SYMBOL_STRING(ctiTrampoline) "\n" 497 SYMBOL_STRING(ctiTrampoline) ":" "\n" 498 "addiu $29,$29,-72" "\n" 499 "sw $31,44($29)" "\n" 500 "sw $18,40($29)" "\n" 501 "sw $17,36($29)" "\n" 502 "sw $16,32($29)" "\n" 503 #if WTF_MIPS_PIC 504 "sw $28,28($29)" "\n" 505 #endif 506 "move $16,$6 # set callFrameRegister" "\n" 507 "li $17,512 # set timeoutCheckRegister" "\n" 508 "move $25,$4 # move executableAddress to t9" "\n" 509 "sw $5,52($29) # store registerFile to current stack" "\n" 510 "sw $6,56($29) # store callFrame to curent stack" "\n" 511 "sw $7,60($29) # store exception to current stack" "\n" 512 "lw $8,88($29) # load enableProfilerReference from previous stack" "\n" 513 "lw $9,92($29) # load globalData from previous stack" "\n" 514 "sw $8,64($29) # store enableProfilerReference to current stack" "\n" 515 "jalr $25" "\n" 516 "sw $9,68($29) # store globalData to current stack" "\n" 517 "lw $16,32($29)" "\n" 518 "lw $17,36($29)" "\n" 519 "lw $18,40($29)" "\n" 520 "lw $31,44($29)" "\n" 521 "jr $31" "\n" 522 "addiu $29,$29,72" "\n" 523 ".set reorder" "\n" 524 ".set macro" "\n" 525 ".end " SYMBOL_STRING(ctiTrampoline) "\n" 526 ); 527 528 asm volatile( 529 ".text" "\n" 530 ".align 2" "\n" 531 ".set noreorder" "\n" 532 ".set nomacro" "\n" 533 ".set nomips16" "\n" 534 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 535 ".ent " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 536 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" 537 #if WTF_MIPS_PIC 538 "lw $28,28($29)" "\n" 539 ".set macro" "\n" 540 "la $25," SYMBOL_STRING(cti_vm_throw) "\n" 541 ".set nomacro" "\n" 542 "bal " SYMBOL_STRING(cti_vm_throw) "\n" 543 "move $4,$29" "\n" 544 #else 545 "jal " SYMBOL_STRING(cti_vm_throw) "\n" 546 "move $4,$29" "\n" 547 #endif 548 "lw $16,32($29)" "\n" 549 "lw $17,36($29)" "\n" 550 "lw $18,40($29)" "\n" 551 "lw $31,44($29)" "\n" 552 "jr $31" "\n" 553 "addiu $29,$29,72" "\n" 554 ".set reorder" "\n" 555 ".set macro" "\n" 556 ".end " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 557 ); 558 559 asm volatile( 560 ".text" "\n" 561 ".align 2" "\n" 562 ".set noreorder" "\n" 563 ".set nomacro" "\n" 564 ".set nomips16" "\n" 565 ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 566 ".ent " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 567 SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n" 568 "lw $16,32($29)" "\n" 569 "lw $17,36($29)" "\n" 570 "lw $18,40($29)" "\n" 571 "lw $31,44($29)" "\n" 572 "jr $31" "\n" 573 "addiu $29,$29,72" "\n" 574 ".set reorder" "\n" 575 ".set macro" "\n" 576 ".end " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 577 ); 578 483 579 #elif COMPILER(RVCT) && CPU(ARM_TRADITIONAL) 484 580 … … 723 819 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedR4) == PRESERVEDR4_OFFSET); 724 820 821 822 #elif CPU(MIPS) 823 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedGP) == 28); 824 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS0) == 32); 825 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS1) == 36); 826 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS2) == 40); 827 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == 44); 828 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == 48); 829 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, registerFile) == 52); 830 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, callFrame) == 56); 831 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, exception) == 60); 832 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, enabledProfilerReference) == 64); 833 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, globalData) == 68); 834 725 835 #endif 726 836 } … … 980 1090 ); \ 981 1091 rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) \ 1092 1093 #elif CPU(MIPS) 1094 #if WTF_MIPS_PIC 1095 #define DEFINE_STUB_FUNCTION(rtype, op) \ 1096 extern "C" { \ 1097 rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \ 1098 }; \ 1099 asm volatile( \ 1100 ".text" "\n" \ 1101 ".align 2" "\n" \ 1102 ".set noreorder" "\n" \ 1103 ".set nomacro" "\n" \ 1104 ".set nomips16" "\n" \ 1105 ".globl " SYMBOL_STRING(cti_##op) "\n" \ 1106 ".ent " SYMBOL_STRING(cti_##op) "\n" \ 1107 SYMBOL_STRING(cti_##op) ":" "\n" \ 1108 "lw $28,28($29)" "\n" \ 1109 "sw $31,48($29)" "\n" \ 1110 ".set macro" "\n" \ 1111 "la $25," SYMBOL_STRING(JITStubThunked_##op) "\n" \ 1112 ".set nomacro" "\n" \ 1113 "bal " SYMBOL_STRING(JITStubThunked_##op) "\n" \ 1114 "nop" "\n" \ 1115 "lw $31,48($29)" "\n" \ 1116 "jr $31" "\n" \ 1117 "nop" "\n" \ 1118 ".set reorder" "\n" \ 1119 ".set macro" "\n" \ 1120 ".end " SYMBOL_STRING(cti_##op) "\n" \ 1121 ); \ 1122 rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) 1123 1124 #else // WTF_MIPS_PIC 1125 #define DEFINE_STUB_FUNCTION(rtype, op) \ 1126 extern "C" { \ 1127 rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \ 1128 }; \ 1129 asm volatile( \ 1130 ".text" "\n" \ 1131 ".align 2" "\n" \ 1132 ".set noreorder" "\n" \ 1133 ".set nomacro" "\n" \ 1134 ".set nomips16" "\n" \ 1135 ".globl " SYMBOL_STRING(cti_##op) "\n" \ 1136 ".ent " SYMBOL_STRING(cti_##op) "\n" \ 1137 SYMBOL_STRING(cti_##op) ":" "\n" \ 1138 "sw $31,48($29)" "\n" \ 1139 "jal " SYMBOL_STRING(JITStubThunked_##op) "\n" \ 1140 "nop" "\n" \ 1141 "lw $31,48($29)" "\n" \ 1142 "jr $31" "\n" \ 1143 "nop" "\n" \ 1144 ".set reorder" "\n" \ 1145 ".set macro" "\n" \ 1146 ".end " SYMBOL_STRING(cti_##op) "\n" \ 1147 ); \ 1148 rtype JITStubThunked_##op(STUB_ARGS_DECLARATION) 1149 1150 #endif 982 1151 983 1152 #elif CPU(ARM_TRADITIONAL) && COMPILER(GCC)
Note:
See TracChangeset
for help on using the changeset viewer.