Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: src/mips64/assembler-mips64.h

Issue 1147503002: MIPS64: Improve long branches utilizing code range. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed typo, addressed stale comment. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/spaces.cc ('k') | src/mips64/assembler-mips64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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_
OLDNEW
« no previous file with comments | « src/heap/spaces.cc ('k') | src/mips64/assembler-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698