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

Side by Side Diff: runtime/vm/flow_graph_compiler.cc

Issue 1153893005: Revert to use macro REG_MASK_BIT, now with parentheses. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: 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 | « no previous file | no next file » | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_XXX.
6 6
7 #include "vm/flow_graph_compiler.h" 7 #include "vm/flow_graph_compiler.h"
8 8
9 #include "vm/bit_vector.h" 9 #include "vm/bit_vector.h"
10 #include "vm/cha.h" 10 #include "vm/cha.h"
(...skipping 1172 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 if (!blocked_registers[regno]) { 1183 if (!blocked_registers[regno]) {
1184 blocked_registers[regno] = true; 1184 blocked_registers[regno] = true;
1185 return static_cast<Register>(regno); 1185 return static_cast<Register>(regno);
1186 } 1186 }
1187 } 1187 }
1188 UNREACHABLE(); 1188 UNREACHABLE();
1189 return kNoRegister; 1189 return kNoRegister;
1190 } 1190 }
1191 1191
1192 1192
1193 static uword RegMaskBit(Register reg) { 1193 #define REG_MASK_BIT(reg) (((reg) != kNoRegister) ? (1 << (reg)) : 0)
1194 return ((reg) != kNoRegister) ? (1 << (reg)) : 0;
1195 }
1196
1197
1198 // Mask of globally reserved registers. Some other registers are only reserved 1194 // Mask of globally reserved registers. Some other registers are only reserved
1199 // in particular code (e.g., ARGS_DESC_REG in intrinsics). 1195 // in particular code (e.g., ARGS_DESC_REG in intrinsics).
1200 static const uword kReservedCpuRegisters = RegMaskBit(SPREG) 1196 static const uword kReservedCpuRegisters = REG_MASK_BIT(SPREG)
1201 | RegMaskBit(FPREG) 1197 | REG_MASK_BIT(FPREG)
1202 | RegMaskBit(TMP) 1198 | REG_MASK_BIT(TMP)
1203 | RegMaskBit(TMP2) 1199 | REG_MASK_BIT(TMP2)
1204 | RegMaskBit(PP) 1200 | REG_MASK_BIT(PP)
1205 | RegMaskBit(THR); 1201 | REG_MASK_BIT(THR);
1206 1202
1207 1203
1208 void FlowGraphCompiler::AllocateRegistersLocally(Instruction* instr) { 1204 void FlowGraphCompiler::AllocateRegistersLocally(Instruction* instr) {
1209 ASSERT(!is_optimizing()); 1205 ASSERT(!is_optimizing());
1210 1206
1211 instr->InitializeLocationSummary(zone(), 1207 instr->InitializeLocationSummary(zone(),
1212 false); // Not optimizing. 1208 false); // Not optimizing.
1213 LocationSummary* locs = instr->locs(); 1209 LocationSummary* locs = instr->locs();
1214 1210
1215 bool blocked_registers[kNumberOfCpuRegisters]; 1211 bool blocked_registers[kNumberOfCpuRegisters];
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1502 resolver_->RestoreFpuScratch(reg_); 1498 resolver_->RestoreFpuScratch(reg_);
1503 } 1499 }
1504 } 1500 }
1505 1501
1506 1502
1507 ParallelMoveResolver::ScratchRegisterScope::ScratchRegisterScope( 1503 ParallelMoveResolver::ScratchRegisterScope::ScratchRegisterScope(
1508 ParallelMoveResolver* resolver, Register blocked) 1504 ParallelMoveResolver* resolver, Register blocked)
1509 : resolver_(resolver), 1505 : resolver_(resolver),
1510 reg_(kNoRegister), 1506 reg_(kNoRegister),
1511 spilled_(false) { 1507 spilled_(false) {
1512 uword blocked_mask = RegMaskBit(blocked) | kReservedCpuRegisters; 1508 uword blocked_mask = REG_MASK_BIT(blocked) | kReservedCpuRegisters;
1513 if (resolver->compiler_->intrinsic_mode()) { 1509 if (resolver->compiler_->intrinsic_mode()) {
1514 // Block additional registers that must be preserved for intrinsics. 1510 // Block additional registers that must be preserved for intrinsics.
1515 blocked_mask |= RegMaskBit(ARGS_DESC_REG); 1511 blocked_mask |= REG_MASK_BIT(ARGS_DESC_REG);
1516 } 1512 }
1517 reg_ = static_cast<Register>( 1513 reg_ = static_cast<Register>(
1518 resolver_->AllocateScratchRegister(Location::kRegister, 1514 resolver_->AllocateScratchRegister(Location::kRegister,
1519 blocked_mask, 1515 blocked_mask,
1520 kFirstFreeCpuRegister, 1516 kFirstFreeCpuRegister,
1521 kLastFreeCpuRegister, 1517 kLastFreeCpuRegister,
1522 &spilled_)); 1518 &spilled_));
1523 1519
1524 if (spilled_) { 1520 if (spilled_) {
1525 resolver->SpillScratch(reg_); 1521 resolver->SpillScratch(reg_);
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
1726 1722
1727 1723
1728 void FlowGraphCompiler::FrameStateClear() { 1724 void FlowGraphCompiler::FrameStateClear() {
1729 ASSERT(!is_optimizing()); 1725 ASSERT(!is_optimizing());
1730 frame_state_.TruncateTo(0); 1726 frame_state_.TruncateTo(0);
1731 } 1727 }
1732 #endif 1728 #endif
1733 1729
1734 1730
1735 } // namespace dart 1731 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698