| 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_;
|
|
|
|
|