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

Side by Side Diff: src/compiler/register-allocator.h

Issue 2416243002: Make unittests work in component build (Closed)
Patch Set: updates Created 4 years, 2 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/compiler/raw-machine-assembler.h ('k') | src/compiler/schedule.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_REGISTER_ALLOCATOR_H_ 5 #ifndef V8_REGISTER_ALLOCATOR_H_
6 #define V8_REGISTER_ALLOCATOR_H_ 6 #define V8_REGISTER_ALLOCATOR_H_
7 7
8 #include "src/base/compiler-specific.h"
8 #include "src/compiler/instruction.h" 9 #include "src/compiler/instruction.h"
10 #include "src/globals.h"
9 #include "src/ostreams.h" 11 #include "src/ostreams.h"
10 #include "src/register-configuration.h" 12 #include "src/register-configuration.h"
11 #include "src/zone/zone-containers.h" 13 #include "src/zone/zone-containers.h"
12 14
13 namespace v8 { 15 namespace v8 {
14 namespace internal { 16 namespace internal {
15 namespace compiler { 17 namespace compiler {
16 18
17 enum RegisterKind { GENERAL_REGISTERS, FP_REGISTERS }; 19 enum RegisterKind { GENERAL_REGISTERS, FP_REGISTERS };
18 20
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 }; 241 };
240 242
241 243
242 static const int32_t kUnassignedRegister = 244 static const int32_t kUnassignedRegister =
243 RegisterConfiguration::kMaxGeneralRegisters; 245 RegisterConfiguration::kMaxGeneralRegisters;
244 246
245 static_assert(kUnassignedRegister <= RegisterConfiguration::kMaxFPRegisters, 247 static_assert(kUnassignedRegister <= RegisterConfiguration::kMaxFPRegisters,
246 "kUnassignedRegister too small"); 248 "kUnassignedRegister too small");
247 249
248 // Representation of a use position. 250 // Representation of a use position.
249 class UsePosition final : public ZoneObject { 251 class V8_EXPORT_PRIVATE UsePosition final
252 : public NON_EXPORTED_BASE(ZoneObject) {
250 public: 253 public:
251 UsePosition(LifetimePosition pos, InstructionOperand* operand, void* hint, 254 UsePosition(LifetimePosition pos, InstructionOperand* operand, void* hint,
252 UsePositionHintType hint_type); 255 UsePositionHintType hint_type);
253 256
254 InstructionOperand* operand() const { return operand_; } 257 InstructionOperand* operand() const { return operand_; }
255 bool HasOperand() const { return operand_ != nullptr; } 258 bool HasOperand() const { return operand_ != nullptr; }
256 259
257 bool RegisterIsBeneficial() const { 260 bool RegisterIsBeneficial() const {
258 return RegisterBeneficialField::decode(flags_); 261 return RegisterBeneficialField::decode(flags_);
259 } 262 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 }; 301 };
299 302
300 303
301 class SpillRange; 304 class SpillRange;
302 class RegisterAllocationData; 305 class RegisterAllocationData;
303 class TopLevelLiveRange; 306 class TopLevelLiveRange;
304 class LiveRangeGroup; 307 class LiveRangeGroup;
305 308
306 // Representation of SSA values' live ranges as a collection of (continuous) 309 // Representation of SSA values' live ranges as a collection of (continuous)
307 // intervals over the instruction ordering. 310 // intervals over the instruction ordering.
308 class LiveRange : public ZoneObject { 311 class V8_EXPORT_PRIVATE LiveRange : public NON_EXPORTED_BASE(ZoneObject) {
309 public: 312 public:
310 UseInterval* first_interval() const { return first_interval_; } 313 UseInterval* first_interval() const { return first_interval_; }
311 UsePosition* first_pos() const { return first_pos_; } 314 UsePosition* first_pos() const { return first_pos_; }
312 TopLevelLiveRange* TopLevel() { return top_level_; } 315 TopLevelLiveRange* TopLevel() { return top_level_; }
313 const TopLevelLiveRange* TopLevel() const { return top_level_; } 316 const TopLevelLiveRange* TopLevel() const { return top_level_; }
314 317
315 bool IsTopLevel() const; 318 bool IsTopLevel() const;
316 319
317 LiveRange* next() const { return next_; } 320 LiveRange* next() const { return next_; }
318 321
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
469 472
470 int assigned_register() const { return assigned_register_; } 473 int assigned_register() const { return assigned_register_; }
471 void set_assigned_register(int reg) { assigned_register_ = reg; } 474 void set_assigned_register(int reg) { assigned_register_ = reg; }
472 475
473 private: 476 private:
474 ZoneVector<LiveRange*> ranges_; 477 ZoneVector<LiveRange*> ranges_;
475 int assigned_register_; 478 int assigned_register_;
476 DISALLOW_COPY_AND_ASSIGN(LiveRangeGroup); 479 DISALLOW_COPY_AND_ASSIGN(LiveRangeGroup);
477 }; 480 };
478 481
479 482 class V8_EXPORT_PRIVATE TopLevelLiveRange final : public LiveRange {
480 class TopLevelLiveRange final : public LiveRange {
481 public: 483 public:
482 explicit TopLevelLiveRange(int vreg, MachineRepresentation rep); 484 explicit TopLevelLiveRange(int vreg, MachineRepresentation rep);
483 int spill_start_index() const { return spill_start_index_; } 485 int spill_start_index() const { return spill_start_index_; }
484 486
485 bool IsFixed() const { return vreg_ < 0; } 487 bool IsFixed() const { return vreg_ < 0; }
486 488
487 bool is_phi() const { return IsPhiField::decode(bits_); } 489 bool is_phi() const { return IsPhiField::decode(bits_); }
488 void set_is_phi(bool value) { bits_ = IsPhiField::update(bits_, value); } 490 void set_is_phi(bool value) { bits_ = IsPhiField::update(bits_, value); }
489 491
490 bool is_non_loop_phi() const { return IsNonLoopPhiField::decode(bits_); } 492 bool is_non_loop_phi() const { return IsNonLoopPhiField::decode(bits_); }
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 RegisterAllocationData* const data_; 1182 RegisterAllocationData* const data_;
1181 1183
1182 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector); 1184 DISALLOW_COPY_AND_ASSIGN(LiveRangeConnector);
1183 }; 1185 };
1184 1186
1185 } // namespace compiler 1187 } // namespace compiler
1186 } // namespace internal 1188 } // namespace internal
1187 } // namespace v8 1189 } // namespace v8
1188 1190
1189 #endif // V8_REGISTER_ALLOCATOR_H_ 1191 #endif // V8_REGISTER_ALLOCATOR_H_
OLDNEW
« no previous file with comments | « src/compiler/raw-machine-assembler.h ('k') | src/compiler/schedule.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698