| OLD | NEW |
| 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
| 2 // All Rights Reserved. | 2 // 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 are | 5 // modification, are permitted provided that the following conditions are |
| 6 // met: | 6 // met: |
| 7 // | 7 // |
| 8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
| 9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
| 10 // | 10 // |
| (...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 517 set_target_address_at(pc, constant_pool, target, icache_flush_mode); | 517 set_target_address_at(pc, constant_pool, target, icache_flush_mode); |
| 518 } | 518 } |
| 519 | 519 |
| 520 // Return the code target address at a call site from the return address | 520 // Return the code target address at a call site from the return address |
| 521 // of that call in the instruction stream. | 521 // of that call in the instruction stream. |
| 522 inline static Address target_address_from_return_address(Address pc); | 522 inline static Address target_address_from_return_address(Address pc); |
| 523 | 523 |
| 524 // Return the code target address of the patch debug break slot | 524 // Return the code target address of the patch debug break slot |
| 525 inline static Address break_address_from_return_address(Address pc); | 525 inline static Address break_address_from_return_address(Address pc); |
| 526 | 526 |
| 527 static void JumpLabelToJumpRegister(Address pc); |
| 528 |
| 527 static void QuietNaN(HeapObject* nan); | 529 static void QuietNaN(HeapObject* nan); |
| 528 | 530 |
| 529 // This sets the branch destination (which gets loaded at the call address). | 531 // This sets the branch destination (which gets loaded at the call address). |
| 530 // This is for calls and branches within generated code. The serializer | 532 // This is for calls and branches within generated code. The serializer |
| 531 // has already deserialized the lui/ori instructions etc. | 533 // has already deserialized the lui/ori instructions etc. |
| 532 inline static void deserialization_set_special_target_at( | 534 inline static void deserialization_set_special_target_at( |
| 533 Address instruction_payload, Code* code, Address target) { | 535 Address instruction_payload, Code* code, Address target) { |
| 534 set_target_address_at( | 536 set_target_address_at( |
| 535 instruction_payload - kInstructionsFor64BitConstant * kInstrSize, | 537 instruction_payload - kInstructionsFor64BitConstant * kInstrSize, |
| 536 code, | 538 code, |
| (...skipping 894 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 | 1433 |
| 1432 private: | 1434 private: |
| 1433 int start_; | 1435 int start_; |
| 1434 int end_; | 1436 int end_; |
| 1435 int next_slot_; | 1437 int next_slot_; |
| 1436 int free_slot_count_; | 1438 int free_slot_count_; |
| 1437 }; | 1439 }; |
| 1438 | 1440 |
| 1439 int32_t get_trampoline_entry(int32_t pos); | 1441 int32_t get_trampoline_entry(int32_t pos); |
| 1440 int unbound_labels_count_; | 1442 int unbound_labels_count_; |
| 1441 // If trampoline is emitted, generated code is becoming large. As this is | 1443 // After trampoline is emitted, long branches are used in generated code for |
| 1442 // already a slow case which can possibly break our code generation for the | 1444 // the forward branches whose target offsets could be beyond reach of branch |
| 1443 // extreme case, we use this information to trigger different mode of | 1445 // instruction. We use this information to trigger different mode of |
| 1444 // branch instruction generation, where we use jump instructions rather | 1446 // branch instruction generation, where we use jump instructions rather |
| 1445 // than regular branch instructions. | 1447 // than regular branch instructions. |
| 1446 bool trampoline_emitted_; | 1448 bool trampoline_emitted_; |
| 1447 static const int kTrampolineSlotsSize = 6 * kInstrSize; | 1449 static const int kTrampolineSlotsSize = 2 * kInstrSize; |
| 1448 static const int kMaxBranchOffset = (1 << (18 - 1)) - 1; | 1450 static const int kMaxBranchOffset = (1 << (18 - 1)) - 1; |
| 1449 static const int kInvalidSlotPos = -1; | 1451 static const int kInvalidSlotPos = -1; |
| 1450 | 1452 |
| 1451 // Internal reference positions, required for unbounded internal reference | 1453 // Internal reference positions, required for unbounded internal reference |
| 1452 // labels. | 1454 // labels. |
| 1453 std::set<int64_t> internal_reference_positions_; | 1455 std::set<int64_t> internal_reference_positions_; |
| 1454 | 1456 |
| 1455 Trampoline trampoline_; | 1457 Trampoline trampoline_; |
| 1456 bool internal_trampoline_exception_; | 1458 bool internal_trampoline_exception_; |
| 1457 | 1459 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1469 class EnsureSpace BASE_EMBEDDED { | 1471 class EnsureSpace BASE_EMBEDDED { |
| 1470 public: | 1472 public: |
| 1471 explicit EnsureSpace(Assembler* assembler) { | 1473 explicit EnsureSpace(Assembler* assembler) { |
| 1472 assembler->CheckBuffer(); | 1474 assembler->CheckBuffer(); |
| 1473 } | 1475 } |
| 1474 }; | 1476 }; |
| 1475 | 1477 |
| 1476 } } // namespace v8::internal | 1478 } } // namespace v8::internal |
| 1477 | 1479 |
| 1478 #endif // V8_ARM_ASSEMBLER_MIPS_H_ | 1480 #endif // V8_ARM_ASSEMBLER_MIPS_H_ |
| OLD | NEW |