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

Unified Diff: src/lithium.h

Issue 16779004: Allow the deoptimizer translation to track de-materialized objects. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Improved comments slightly. Created 7 years, 6 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 | « src/ia32/lithium-ia32.cc ('k') | src/objects.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/lithium.h
diff --git a/src/lithium.h b/src/lithium.h
index 170e5c89bcee9e7cfa510753d005d668114c0c26..ab34453beff6015a37dc9a00afc02e4251f93414 100644
--- a/src/lithium.h
+++ b/src/lithium.h
@@ -527,6 +527,7 @@ class LEnvironment: public ZoneObject {
deoptimization_index_(Safepoint::kNoDeoptimizationIndex),
translation_index_(-1),
ast_id_(ast_id),
+ translation_size_(value_count),
parameter_count_(parameter_count),
pc_offset_(-1),
values_(value_count, zone),
@@ -544,6 +545,7 @@ class LEnvironment: public ZoneObject {
int deoptimization_index() const { return deoptimization_index_; }
int translation_index() const { return translation_index_; }
BailoutId ast_id() const { return ast_id_; }
+ int translation_size() const { return translation_size_; }
int parameter_count() const { return parameter_count_; }
int pc_offset() const { return pc_offset_; }
LOperand** spilled_registers() const { return spilled_registers_; }
@@ -553,6 +555,7 @@ class LEnvironment: public ZoneObject {
const ZoneList<LOperand*>* values() const { return &values_; }
LEnvironment* outer() const { return outer_; }
HEnterInlined* entry() { return entry_; }
+ Zone* zone() const { return zone_; }
void AddValue(LOperand* operand,
Representation representation,
@@ -560,11 +563,11 @@ class LEnvironment: public ZoneObject {
values_.Add(operand, zone());
if (representation.IsSmiOrTagged()) {
ASSERT(!is_uint32);
- is_tagged_.Add(values_.length() - 1);
+ is_tagged_.Add(values_.length() - 1, zone());
}
if (is_uint32) {
- is_uint32_.Add(values_.length() - 1);
+ is_uint32_.Add(values_.length() - 1, zone());
}
}
@@ -596,8 +599,6 @@ class LEnvironment: public ZoneObject {
void PrintTo(StringStream* stream);
- Zone* zone() const { return zone_; }
-
private:
Handle<JSFunction> closure_;
FrameType frame_type_;
@@ -605,11 +606,15 @@ class LEnvironment: public ZoneObject {
int deoptimization_index_;
int translation_index_;
BailoutId ast_id_;
+ int translation_size_;
int parameter_count_;
int pc_offset_;
+
+ // Value array: [parameters] [locals] [expression stack] [de-materialized].
+ // |>--------- translation_size ---------<|
ZoneList<LOperand*> values_;
- BitVector is_tagged_;
- BitVector is_uint32_;
+ GrowableBitVector is_tagged_;
+ GrowableBitVector is_uint32_;
// Allocation index indexed arrays of spill slot operands for registers
// that are also in spill slots at an OSR entry. NULL for environments
@@ -619,7 +624,6 @@ class LEnvironment: public ZoneObject {
LEnvironment* outer_;
HEnterInlined* entry_;
-
Zone* zone_;
};
« no previous file with comments | « src/ia32/lithium-ia32.cc ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698