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

Unified Diff: src/compiler/instruction.h

Issue 623313003: [turbofan] map vregs early (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/compiler/instruction.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/instruction.h
diff --git a/src/compiler/instruction.h b/src/compiler/instruction.h
index e3507f7ec36a55d883c760b3588c02bb08fc8a86..5811d548ff46bfaefe05d67d6c3f83abd1bb87aa 100644
--- a/src/compiler/instruction.h
+++ b/src/compiler/instruction.h
@@ -34,8 +34,8 @@ const InstructionCode kSourcePositionInstruction = -3;
#define INSTRUCTION_OPERAND_LIST(V) \
- V(Constant, CONSTANT, 128) \
- V(Immediate, IMMEDIATE, 128) \
+ V(Constant, CONSTANT, 0) \
+ V(Immediate, IMMEDIATE, 0) \
V(StackSlot, STACK_SLOT, 128) \
V(DoubleStackSlot, DOUBLE_STACK_SLOT, 128) \
V(Register, REGISTER, Register::kNumRegisters) \
@@ -804,20 +804,7 @@ typedef ZoneVector<FrameStateDescriptor*> DeoptimizationVector;
// TODO(titzer): s/IsDouble/IsFloat64/
class InstructionSequence FINAL {
public:
- InstructionSequence(Linkage* linkage, Graph* graph, Schedule* schedule)
- : graph_(graph),
- linkage_(linkage),
- schedule_(schedule),
- constants_(ConstantMap::key_compare(),
- ConstantMap::allocator_type(zone())),
- immediates_(zone()),
- instructions_(zone()),
- next_virtual_register_(graph->NodeCount()),
- pointer_maps_(zone()),
- doubles_(std::less<int>(), VirtualRegisterSet::allocator_type(zone())),
- references_(std::less<int>(),
- VirtualRegisterSet::allocator_type(zone())),
- deoptimization_entries_(zone()) {}
+ InstructionSequence(Linkage* linkage, Graph* graph, Schedule* schedule);
int NextVirtualRegister() { return next_virtual_register_++; }
int VirtualRegisterCount() const { return next_virtual_register_; }
@@ -840,7 +827,7 @@ class InstructionSequence FINAL {
BasicBlock* GetBasicBlock(int instruction_index);
- int GetVirtualRegister(Node* node) const { return node->id(); }
+ int GetVirtualRegister(const Node* node);
bool IsReference(int virtual_register) const;
bool IsDouble(int virtual_register) const;
@@ -880,9 +867,11 @@ class InstructionSequence FINAL {
void StartBlock(BasicBlock* block);
void EndBlock(BasicBlock* block);
- void AddConstant(int virtual_register, Constant constant) {
+ int AddConstant(Node* node, Constant constant) {
+ int virtual_register = GetVirtualRegister(node);
DCHECK(constants_.find(virtual_register) == constants_.end());
constants_.insert(std::make_pair(virtual_register, constant));
+ return virtual_register;
}
Constant GetConstant(int virtual_register) const {
ConstantMap::const_iterator it = constants_.find(virtual_register);
@@ -926,6 +915,7 @@ class InstructionSequence FINAL {
typedef std::set<int, std::less<int>, ZoneIntAllocator> VirtualRegisterSet;
Graph* graph_;
+ int* node_map_;
Linkage* linkage_;
Schedule* schedule_;
ConstantMap constants_;
« no previous file with comments | « no previous file | src/compiler/instruction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698