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

Unified Diff: runtime/vm/intermediate_language.h

Issue 10952002: Reapply "Deoptimization support in inlined code." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: 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
« no previous file with comments | « runtime/vm/il_printer.cc ('k') | runtime/vm/intermediate_language.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « runtime/vm/il_printer.cc ('k') | runtime/vm/intermediate_language.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698