Changeset 66846 in webkit for trunk/JavaScriptCore/jit/JITStubs.cpp
- Timestamp:
- Sep 6, 2010, 1:29:01 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITStubs.cpp
r66150 r66846 311 311 #define PRESERVEDR4_OFFSET 68 312 312 // See DEFINE_STUB_FUNCTION for more information. 313 314 #elif CPU(MIPS) 315 316 #define PRESERVED_GP_OFFSET 60 317 #define PRESERVED_S0_OFFSET 64 318 #define PRESERVED_S1_OFFSET 68 319 #define PRESERVED_S2_OFFSET 72 320 #define PRESERVED_RETURN_ADDRESS_OFFSET 76 321 #define THUNK_RETURN_ADDRESS_OFFSET 80 322 #define REGISTER_FILE_OFFSET 84 323 #define CALLFRAME_OFFSET 88 324 #define EXCEPTION_OFFSET 92 325 #define ENABLE_PROFILER_REFERENCE_OFFSET 96 326 #define GLOBAL_DATA_OFFSET 100 327 #define STACK_LENGTH 104 313 328 314 329 #else … … 466 481 #elif CPU(MIPS) 467 482 468 asm volatile( 469 ".text" "\n" 470 ".align 2" "\n" 471 ".set noreorder" "\n" 472 ".set nomacro" "\n" 473 ".set nomips16" "\n" 474 ".globl " SYMBOL_STRING(ctiTrampoline) "\n" 475 ".ent " SYMBOL_STRING(ctiTrampoline) "\n" 476 SYMBOL_STRING(ctiTrampoline) ":" "\n" 477 "addiu $29,$29,-72" "\n" 478 "sw $31,44($29)" "\n" 479 "sw $18,40($29)" "\n" 480 "sw $17,36($29)" "\n" 481 "sw $16,32($29)" "\n" 482 #if WTF_MIPS_PIC 483 "sw $28,28($29)" "\n" 484 #endif 485 "move $16,$6 # set callFrameRegister" "\n" 486 "li $17,512 # set timeoutCheckRegister" "\n" 487 "move $25,$4 # move executableAddress to t9" "\n" 488 "sw $5,52($29) # store registerFile to current stack" "\n" 489 "sw $6,56($29) # store callFrame to curent stack" "\n" 490 "sw $7,60($29) # store exception to current stack" "\n" 491 "lw $8,88($29) # load enableProfilerReference from previous stack" "\n" 492 "lw $9,92($29) # load globalData from previous stack" "\n" 493 "sw $8,64($29) # store enableProfilerReference to current stack" "\n" 494 "jalr $25" "\n" 495 "sw $9,68($29) # store globalData to current stack" "\n" 496 "lw $16,32($29)" "\n" 497 "lw $17,36($29)" "\n" 498 "lw $18,40($29)" "\n" 499 "lw $31,44($29)" "\n" 500 "jr $31" "\n" 501 "addiu $29,$29,72" "\n" 502 ".set reorder" "\n" 503 ".set macro" "\n" 504 ".end " SYMBOL_STRING(ctiTrampoline) "\n" 505 ); 506 507 asm volatile( 508 ".text" "\n" 509 ".align 2" "\n" 510 ".set noreorder" "\n" 511 ".set nomacro" "\n" 512 ".set nomips16" "\n" 513 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 514 ".ent " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 515 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" 516 #if WTF_MIPS_PIC 517 "lw $28,28($29)" "\n" 518 ".set macro" "\n" 519 "la $25," SYMBOL_STRING(cti_vm_throw) "\n" 520 ".set nomacro" "\n" 521 "bal " SYMBOL_STRING(cti_vm_throw) "\n" 522 "move $4,$29" "\n" 523 #else 524 "jal " SYMBOL_STRING(cti_vm_throw) "\n" 525 "move $4,$29" "\n" 526 #endif 527 "lw $16,32($29)" "\n" 528 "lw $17,36($29)" "\n" 529 "lw $18,40($29)" "\n" 530 "lw $31,44($29)" "\n" 531 "jr $31" "\n" 532 "addiu $29,$29,72" "\n" 533 ".set reorder" "\n" 534 ".set macro" "\n" 535 ".end " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 536 ); 537 538 asm volatile( 539 ".text" "\n" 540 ".align 2" "\n" 541 ".set noreorder" "\n" 542 ".set nomacro" "\n" 543 ".set nomips16" "\n" 544 ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 545 ".ent " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 546 SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n" 547 "lw $16,32($29)" "\n" 548 "lw $17,36($29)" "\n" 549 "lw $18,40($29)" "\n" 550 "lw $31,44($29)" "\n" 551 "jr $31" "\n" 552 "addiu $29,$29,72" "\n" 553 ".set reorder" "\n" 554 ".set macro" "\n" 555 ".end " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 556 ); 483 #define PRESERVED_GP_OFFSET 28 484 #define PRESERVED_S0_OFFSET 32 485 #define PRESERVED_S1_OFFSET 36 486 #define PRESERVED_S2_OFFSET 40 487 #define PRESERVED_RETURN_ADDRESS_OFFSET 44 488 #define THUNK_RETURN_ADDRESS_OFFSET 48 489 #define REGISTER_FILE_OFFSET 52 490 #define CALLFRAME_OFFSET 56 491 #define EXCEPTION_OFFSET 60 492 #define ENABLE_PROFILER_REFERENCE_OFFSET 64 493 #define GLOBAL_DATA_OFFSET 68 494 #define STACK_LENGTH 72 557 495 558 496 #elif COMPILER(MSVC) && CPU(X86) … … 626 564 627 565 #endif // USE(JSVALUE32_64) 566 567 #if CPU(MIPS) 568 asm volatile( 569 ".text" "\n" 570 ".align 2" "\n" 571 ".set noreorder" "\n" 572 ".set nomacro" "\n" 573 ".set nomips16" "\n" 574 ".globl " SYMBOL_STRING(ctiTrampoline) "\n" 575 ".ent " SYMBOL_STRING(ctiTrampoline) "\n" 576 SYMBOL_STRING(ctiTrampoline) ":" "\n" 577 "addiu $29,$29,-" STRINGIZE_VALUE_OF(STACK_LENGTH) "\n" 578 "sw $31," STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) "($29)" "\n" 579 "sw $18," STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) "($29)" "\n" 580 "sw $17," STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) "($29)" "\n" 581 "sw $16," STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) "($29)" "\n" 582 #if WTF_MIPS_PIC 583 "sw $28," STRINGIZE_VALUE_OF(PRESERVED_GP_OFFSET) "($29)" "\n" 584 #endif 585 "move $16,$6 # set callFrameRegister" "\n" 586 "li $17,512 # set timeoutCheckRegister" "\n" 587 "move $25,$4 # move executableAddress to t9" "\n" 588 "sw $5," STRINGIZE_VALUE_OF(REGISTER_FILE_OFFSET) "($29) # store registerFile to current stack" "\n" 589 "sw $6," STRINGIZE_VALUE_OF(CALLFRAME_OFFSET) "($29) # store callFrame to curent stack" "\n" 590 "sw $7," STRINGIZE_VALUE_OF(EXCEPTION_OFFSET) "($29) # store exception to current stack" "\n" 591 "lw $8," STRINGIZE_VALUE_OF(STACK_LENGTH + 16) "($29) # load enableProfilerReference from previous stack" "\n" 592 "lw $9," STRINGIZE_VALUE_OF(STACK_LENGTH + 20) "($29) # load globalData from previous stack" "\n" 593 "sw $8," STRINGIZE_VALUE_OF(ENABLE_PROFILER_REFERENCE_OFFSET) "($29) # store enableProfilerReference to current stack" "\n" 594 "jalr $25" "\n" 595 "sw $9," STRINGIZE_VALUE_OF(GLOBAL_DATA_OFFSET) "($29) # store globalData to current stack" "\n" 596 "lw $16," STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) "($29)" "\n" 597 "lw $17," STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) "($29)" "\n" 598 "lw $18," STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) "($29)" "\n" 599 "lw $31," STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) "($29)" "\n" 600 "jr $31" "\n" 601 "addiu $29,$29," STRINGIZE_VALUE_OF(STACK_LENGTH) "\n" 602 ".set reorder" "\n" 603 ".set macro" "\n" 604 ".end " SYMBOL_STRING(ctiTrampoline) "\n" 605 ); 606 607 asm volatile( 608 ".text" "\n" 609 ".align 2" "\n" 610 ".set noreorder" "\n" 611 ".set nomacro" "\n" 612 ".set nomips16" "\n" 613 ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 614 ".ent " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 615 SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n" 616 #if WTF_MIPS_PIC 617 "lw $28," STRINGIZE_VALUE_OF(PRESERVED_GP_OFFSET) "($29)" "\n" 618 ".set macro" "\n" 619 "la $25," SYMBOL_STRING(cti_vm_throw) "\n" 620 ".set nomacro" "\n" 621 "bal " SYMBOL_STRING(cti_vm_throw) "\n" 622 "move $4,$29" "\n" 623 #else 624 "jal " SYMBOL_STRING(cti_vm_throw) "\n" 625 "move $4,$29" "\n" 626 #endif 627 "lw $16," STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) "($29)" "\n" 628 "lw $17," STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) "($29)" "\n" 629 "lw $18," STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) "($29)" "\n" 630 "lw $31," STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) "($29)" "\n" 631 "jr $31" "\n" 632 "addiu $29,$29," STRINGIZE_VALUE_OF(STACK_LENGTH) "\n" 633 ".set reorder" "\n" 634 ".set macro" "\n" 635 ".end " SYMBOL_STRING(ctiVMThrowTrampoline) "\n" 636 ); 637 638 asm volatile( 639 ".text" "\n" 640 ".align 2" "\n" 641 ".set noreorder" "\n" 642 ".set nomacro" "\n" 643 ".set nomips16" "\n" 644 ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 645 ".ent " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 646 SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n" 647 "lw $16," STRINGIZE_VALUE_OF(PRESERVED_S0_OFFSET) "($29)" "\n" 648 "lw $17," STRINGIZE_VALUE_OF(PRESERVED_S1_OFFSET) "($29)" "\n" 649 "lw $18," STRINGIZE_VALUE_OF(PRESERVED_S2_OFFSET) "($29)" "\n" 650 "lw $31," STRINGIZE_VALUE_OF(PRESERVED_RETURN_ADDRESS_OFFSET) "($29)" "\n" 651 "jr $31" "\n" 652 "addiu $29,$29," STRINGIZE_VALUE_OF(STACK_LENGTH) "\n" 653 ".set reorder" "\n" 654 ".set macro" "\n" 655 ".end " SYMBOL_STRING(ctiOpThrowNotCaught) "\n" 656 ); 657 #endif 628 658 629 659 #if COMPILER(GCC) && CPU(ARM_THUMB2) … … 804 834 805 835 #elif CPU(MIPS) 806 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedGP) == 28);807 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS0) == 32);808 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS1) == 36);809 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS2) == 40);810 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == 44);811 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == 48);812 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, registerFile) == 52);813 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, callFrame) == 56);814 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, exception) == 60);815 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, enabledProfilerReference) == 64);816 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, globalData) == 68);836 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedGP) == PRESERVED_GP_OFFSET); 837 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS0) == PRESERVED_S0_OFFSET); 838 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS1) == PRESERVED_S1_OFFSET); 839 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedS2) == PRESERVED_S2_OFFSET); 840 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, preservedReturnAddress) == PRESERVED_RETURN_ADDRESS_OFFSET); 841 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, thunkReturnAddress) == THUNK_RETURN_ADDRESS_OFFSET); 842 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, registerFile) == REGISTER_FILE_OFFSET); 843 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, callFrame) == CALLFRAME_OFFSET); 844 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, exception) == EXCEPTION_OFFSET); 845 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, enabledProfilerReference) == ENABLE_PROFILER_REFERENCE_OFFSET); 846 ASSERT(OBJECT_OFFSETOF(struct JITStackFrame, globalData) == GLOBAL_DATA_OFFSET); 817 847 818 848 #endif … … 1087 1117 ".ent " SYMBOL_STRING(cti_##op) "\n" \ 1088 1118 SYMBOL_STRING(cti_##op) ":" "\n" \ 1089 "lw $28, 28($29)" "\n" \1090 "sw $31, 48($29)" "\n" \1119 "lw $28," STRINGIZE_VALUE_OF(PRESERVED_GP_OFFSET) "($29)" "\n" \ 1120 "sw $31," STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "($29)" "\n" \ 1091 1121 ".set macro" "\n" \ 1092 1122 "la $25," SYMBOL_STRING(JITStubThunked_##op) "\n" \ … … 1094 1124 "bal " SYMBOL_STRING(JITStubThunked_##op) "\n" \ 1095 1125 "nop" "\n" \ 1096 "lw $31, 48($29)" "\n" \1126 "lw $31," STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "($29)" "\n" \ 1097 1127 "jr $31" "\n" \ 1098 1128 "nop" "\n" \ … … 1117 1147 ".ent " SYMBOL_STRING(cti_##op) "\n" \ 1118 1148 SYMBOL_STRING(cti_##op) ":" "\n" \ 1119 "sw $31, 48($29)" "\n" \1149 "sw $31," STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "($29)" "\n" \ 1120 1150 "jal " SYMBOL_STRING(JITStubThunked_##op) "\n" \ 1121 1151 "nop" "\n" \ 1122 "lw $31, 48($29)" "\n" \1152 "lw $31," STRINGIZE_VALUE_OF(THUNK_RETURN_ADDRESS_OFFSET) "($29)" "\n" \ 1123 1153 "jr $31" "\n" \ 1124 1154 "nop" "\n" \
Note:
See TracChangeset
for help on using the changeset viewer.