Index: runtime/vm/intermediate_language.h |
diff --git a/runtime/vm/intermediate_language.h b/runtime/vm/intermediate_language.h |
index c8136aa42d19b580183dd78b56d283f70c002d2d..053b55c80ce861ebe1ac4e62adf1aaba3b3cd41c 100644 |
--- a/runtime/vm/intermediate_language.h |
+++ b/runtime/vm/intermediate_language.h |
@@ -3494,6 +3494,16 @@ class Environment : public ZoneAllocated { |
environment_->values_[index_] = value; |
} |
+ Location CurrentLocation() const { |
+ ASSERT(!Done()); |
+ return environment_->locations_[index_]; |
+ } |
+ |
+ void SetCurrentLocation(Location loc) { |
+ ASSERT(!Done()); |
+ environment_->locations_[index_] = loc; |
+ } |
+ |
private: |
Environment* environment_; |
intptr_t index_; |
@@ -3525,6 +3535,16 @@ class Environment : public ZoneAllocated { |
iterator_.SetCurrentValue(value); |
} |
+ Location CurrentLocation() const { |
+ ASSERT(!Done()); |
+ return iterator_.CurrentLocation(); |
+ } |
+ |
+ void SetCurrentLocation(Location loc) { |
+ ASSERT(!Done()); |
+ iterator_.SetCurrentLocation(loc); |
+ } |
+ |
private: |
void SkipDone() { |
while (!Done() && iterator_.Done()) { |
@@ -3538,7 +3558,7 @@ class Environment : public ZoneAllocated { |
// Construct an environment by constructing uses from an array of definitions. |
static Environment* From(const GrowableArray<Definition*>& definitions, |
intptr_t fixed_parameter_count, |
- const Environment* outer); |
+ const Function& function); |
void set_locations(Location* locations) { |
ASSERT(locations_ == NULL); |
@@ -3583,7 +3603,10 @@ class Environment : public ZoneAllocated { |
return fixed_parameter_count_; |
} |
+ const Function& function() const { return function_; } |
+ |
void DeepCopyTo(Instruction* instr) const; |
+ void DeepCopyToOuter(Instruction* instr) const; |
void PrintTo(BufferFormatter* f) const; |
@@ -3593,11 +3616,13 @@ class Environment : public ZoneAllocated { |
Environment(intptr_t length, |
intptr_t fixed_parameter_count, |
intptr_t deopt_id, |
+ const Function& function, |
Environment* outer) |
: values_(length), |
locations_(NULL), |
fixed_parameter_count_(fixed_parameter_count), |
deopt_id_(deopt_id), |
+ function_(function), |
outer_(outer) { } |
Environment* DeepCopy() const; |
@@ -3606,6 +3631,7 @@ class Environment : public ZoneAllocated { |
Location* locations_; |
const intptr_t fixed_parameter_count_; |
intptr_t deopt_id_; |
+ const Function& function_; |
Environment* outer_; |
DISALLOW_COPY_AND_ASSIGN(Environment); |