| Index: src/deoptimizer.h
|
| ===================================================================
|
| --- src/deoptimizer.h (revision 7542)
|
| +++ src/deoptimizer.h (working copy)
|
| @@ -42,41 +42,20 @@
|
| 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_; }
|
| + HeapNumberMaterializationDescriptor(Address slot_address, double val)
|
| + : slot_address_(slot_address), val_(val) { }
|
|
|
| - private:
|
| - // Offset relative to the top of the stack.
|
| - int stack_index_;
|
| -};
|
| + Address slot_address() const { return slot_address_; }
|
| + double value() const { return val_; }
|
|
|
| -
|
| -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_;
|
| + Address slot_address_;
|
| + double val_;
|
| };
|
|
|
|
|
| -class ValueDescriptionDouble: public ValueDescription {
|
| - public:
|
| - ValueDescriptionDouble(int index, double value)
|
| - : ValueDescription(index), double_value_(value) { }
|
| - double double_value() const { return double_value_; }
|
| -
|
| - private:
|
| - // Raw value.
|
| - double double_value_;
|
| -};
|
| -
|
| -
|
| class OptimizedFunctionVisitor BASE_EMBEDDED {
|
| public:
|
| virtual ~OptimizedFunctionVisitor() {}
|
| @@ -164,7 +143,7 @@
|
|
|
| ~Deoptimizer();
|
|
|
| - void InsertHeapNumberValues(int index, JavaScriptFrame* frame);
|
| + void MaterializeHeapNumbers();
|
|
|
| static void ComputeOutputFrames(Deoptimizer* deoptimizer);
|
|
|
| @@ -253,14 +232,8 @@
|
|
|
| Object* ComputeLiteral(int index) const;
|
|
|
| - void InsertHeapNumberValue(JavaScriptFrame* frame,
|
| - int stack_index,
|
| - double val,
|
| - int extra_slot_count);
|
| + void AddDoubleValue(intptr_t slot_address, double value);
|
|
|
| - void AddInteger32Value(int frame_index, int slot_index, int32_t value);
|
| - void AddDoubleValue(int frame_index, int slot_index, double value);
|
| -
|
| static LargeObjectChunk* CreateCode(BailoutType type);
|
| static void GenerateDeoptimizationEntries(
|
| MacroAssembler* masm, int count, BailoutType type);
|
| @@ -295,8 +268,7 @@
|
| // 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_;
|
|
|
|
|