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

Unified Diff: runtime/vm/flow_graph_allocator.h

Issue 10968059: Support for unboxed 64-bit integer bitwise operations and equality on ia32. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: fixed boxing of smis and added one more test Created 8 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/flow_graph_allocator.h
===================================================================
--- runtime/vm/flow_graph_allocator.h (revision 12765)
+++ runtime/vm/flow_graph_allocator.h (working copy)
@@ -33,6 +33,8 @@
LiveRange* GetLiveRange(intptr_t vreg);
private:
+ void CollectRepresentations();
+
// Eliminate unnecessary environments from the IL.
void EliminateEnvironmentUses();
@@ -191,13 +193,14 @@
MoveOperands* AddMoveAt(intptr_t pos, Location to, Location from);
- Location MakeRegisterLocation(intptr_t reg) {
- return Location::MachineRegisterLocation(register_kind_, reg);
+ Location MakeRegisterLocation(intptr_t reg, Location::Representation rep) {
+ return Location::MachineRegisterLocation(register_kind_, reg, rep);
}
void PrintLiveRanges();
const FlowGraph& flow_graph_;
+ BitVector* reps_;
const GrowableArray<BlockEntryInstr*>& block_order_;
const GrowableArray<BlockEntryInstr*>& postorder_;
@@ -449,8 +452,9 @@
// LiveRange represents a sequence of UseIntervals for a given SSA value.
class LiveRange : public ZoneAllocated {
public:
- explicit LiveRange(intptr_t vreg)
+ explicit LiveRange(intptr_t vreg, Location::Representation rep)
: vreg_(vreg),
+ representation_(rep),
assigned_location_(),
spill_slot_(),
uses_(NULL),
@@ -465,6 +469,7 @@
static LiveRange* MakeTemp(intptr_t pos, Location* location_slot);
intptr_t vreg() const { return vreg_; }
+ Location::Representation representation() const { return representation_; }
LiveRange* next_sibling() const { return next_sibling_; }
UsePosition* first_use() const { return uses_; }
void set_first_use(UsePosition* use) { uses_ = use; }
@@ -517,12 +522,14 @@
private:
LiveRange(intptr_t vreg,
+ Location::Representation rep,
UsePosition* uses,
UseInterval* first_use_interval,
UseInterval* last_use_interval,
SafepointPosition* first_safepoint,
LiveRange* next_sibling)
: vreg_(vreg),
+ representation_(rep),
assigned_location_(),
uses_(uses),
first_use_interval_(first_use_interval),
@@ -534,6 +541,7 @@
}
const intptr_t vreg_;
+ Location::Representation representation_;
Location assigned_location_;
Location spill_slot_;

Powered by Google App Engine
This is Rietveld 408576698