| Index: src/deoptimizer.h
|
| diff --git a/src/deoptimizer.h b/src/deoptimizer.h
|
| index db6a59a259bd4b4fa3d28da6c34d3bf308d459d9..6be5d6345483340856921ee809ebd585eba7c8ee 100644
|
| --- a/src/deoptimizer.h
|
| +++ b/src/deoptimizer.h
|
| @@ -287,6 +287,8 @@ class Deoptimizer : public Malloced {
|
| void DoComputeJSFrame(TranslationIterator* iterator, int frame_index);
|
| void DoComputeArgumentsAdaptorFrame(TranslationIterator* iterator,
|
| int frame_index);
|
| + void DoComputeConstructStubFrame(TranslationIterator* iterator,
|
| + int frame_index);
|
| void DoTranslateCommand(TranslationIterator* iterator,
|
| int frame_index,
|
| unsigned output_offset);
|
| @@ -435,6 +437,9 @@ class FrameDescription {
|
| intptr_t GetFp() const { return fp_; }
|
| void SetFp(intptr_t fp) { fp_ = fp; }
|
|
|
| + intptr_t GetContext() const { return context_; }
|
| + void SetContext(intptr_t context) { context_ = context; }
|
| +
|
| Smi* GetState() const { return state_; }
|
| void SetState(Smi* state) { state_ = state; }
|
|
|
| @@ -496,6 +501,7 @@ class FrameDescription {
|
| intptr_t top_;
|
| intptr_t pc_;
|
| intptr_t fp_;
|
| + intptr_t context_;
|
| StackFrame::Type type_;
|
| Smi* state_;
|
| #ifdef DEBUG
|
| @@ -560,6 +566,7 @@ class Translation BASE_EMBEDDED {
|
| enum Opcode {
|
| BEGIN,
|
| JS_FRAME,
|
| + CONSTRUCT_STUB_FRAME,
|
| ARGUMENTS_ADAPTOR_FRAME,
|
| REGISTER,
|
| INT32_REGISTER,
|
| @@ -588,6 +595,7 @@ class Translation BASE_EMBEDDED {
|
| // Commands.
|
| void BeginJSFrame(int node_id, int literal_id, unsigned height);
|
| void BeginArgumentsAdaptorFrame(int literal_id, unsigned height);
|
| + void BeginConstructStubFrame(int literal_id, unsigned height);
|
| void StoreRegister(Register reg);
|
| void StoreInt32Register(Register reg);
|
| void StoreDoubleRegister(DoubleRegister reg);
|
| @@ -720,7 +728,8 @@ class DeoptimizedFrameInfo : public Malloced {
|
| public:
|
| DeoptimizedFrameInfo(Deoptimizer* deoptimizer,
|
| int frame_index,
|
| - bool has_arguments_adaptor);
|
| + bool has_arguments_adaptor,
|
| + bool has_construct_stub);
|
| virtual ~DeoptimizedFrameInfo();
|
|
|
| // GC support.
|
| @@ -737,6 +746,12 @@ class DeoptimizedFrameInfo : public Malloced {
|
| return function_;
|
| }
|
|
|
| + // Check if this frame is preceded by construct stub frame. The bottom-most
|
| + // inlined frame might still be called by an uninlined construct stub.
|
| + bool HasConstructStub() {
|
| + return has_construct_stub_;
|
| + }
|
| +
|
| // Get an incoming argument.
|
| Object* GetParameter(int index) {
|
| ASSERT(0 <= index && index < parameters_count());
|
| @@ -754,11 +769,6 @@ class DeoptimizedFrameInfo : public Malloced {
|
| }
|
|
|
| private:
|
| - // Set the frame function.
|
| - void SetFunction(JSFunction* function) {
|
| - function_ = function;
|
| - }
|
| -
|
| // Set an incoming argument.
|
| void SetParameter(int index, Object* obj) {
|
| ASSERT(0 <= index && index < parameters_count());
|
| @@ -772,6 +782,7 @@ class DeoptimizedFrameInfo : public Malloced {
|
| }
|
|
|
| JSFunction* function_;
|
| + bool has_construct_stub_;
|
| int parameters_count_;
|
| int expression_count_;
|
| Object** parameters_;
|
|
|