Index: src/deoptimizer.h |
diff --git a/src/deoptimizer.h b/src/deoptimizer.h |
index 514de05f267ae4dc42328badd6732a4862fb2364..cb82f446beacc838a46c292def294ffe5ba3c767 100644 |
--- a/src/deoptimizer.h |
+++ b/src/deoptimizer.h |
@@ -42,38 +42,17 @@ class TranslationIterator; |
class DeoptimizingCodeListNode; |
-class ValueDescription BASE_EMBEDDED { |
+class HeapNumberMaterializationDescriptor BASE_EMBEDDED { |
public: |
- explicit ValueDescription(int index) : stack_index_(index) { } |
- int stack_index() const { return stack_index_; } |
- |
- private: |
- // Offset relative to the top of the stack. |
- int stack_index_; |
-}; |
- |
- |
-class ValueDescriptionInteger32: public ValueDescription { |
- public: |
- ValueDescriptionInteger32(int index, int32_t value) |
- : ValueDescription(index), int32_value_(value) { } |
- int32_t int32_value() const { return int32_value_; } |
- |
- private: |
- // Raw value. |
- int32_t int32_value_; |
-}; |
+ HeapNumberMaterializationDescriptor(Address slot_address, double val) |
+ : slot_address_(slot_address), val_(val) { } |
- |
-class ValueDescriptionDouble: public ValueDescription { |
- public: |
- ValueDescriptionDouble(int index, double value) |
- : ValueDescription(index), double_value_(value) { } |
- double double_value() const { return double_value_; } |
+ Address slot_address() const { return slot_address_; } |
+ double value() const { return val_; } |
private: |
- // Raw value. |
- double double_value_; |
+ Address slot_address_; |
+ double val_; |
}; |
@@ -190,7 +169,7 @@ class Deoptimizer : public Malloced { |
~Deoptimizer(); |
- void InsertHeapNumberValues(int index, JavaScriptFrame* frame); |
+ void MaterializeHeapNumbers(); |
static void ComputeOutputFrames(Deoptimizer* deoptimizer); |
@@ -277,13 +256,7 @@ class Deoptimizer : public Malloced { |
Object* ComputeLiteral(int index) const; |
- void InsertHeapNumberValue(JavaScriptFrame* frame, |
- int stack_index, |
- double val, |
- int extra_slot_count); |
- |
- void AddInteger32Value(int frame_index, int slot_index, int32_t value); |
- void AddDoubleValue(int frame_index, int slot_index, double value); |
+ void AddDoubleValue(intptr_t slot_address, double value); |
static LargeObjectChunk* CreateCode(BailoutType type); |
static void GenerateDeoptimizationEntries( |
@@ -310,8 +283,7 @@ class Deoptimizer : public Malloced { |
// Array of output frame descriptions. |
FrameDescription** output_; |
- List<ValueDescriptionInteger32>* integer32_values_; |
- List<ValueDescriptionDouble>* double_values_; |
+ List<HeapNumberMaterializationDescriptor> deferred_heap_numbers_; |
static int table_entry_size_; |