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

Side by Side Diff: src/isolate.cc

Issue 2894293003: Save/restore only live registers in the generator suspend/resume. (Closed)
Patch Set: Address review comments. Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/isolate.h" 5 #include "src/isolate.h"
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include <fstream> // NOLINT(readability/streams) 9 #include <fstream> // NOLINT(readability/streams)
10 #include <sstream> 10 #include <sstream>
(...skipping 1300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1311 // materialized by the deoptimizer. If there is a handler frame 1311 // materialized by the deoptimizer. If there is a handler frame
1312 // in between then {frame->sp()} would already be correct. 1312 // in between then {frame->sp()} would already be correct.
1313 Address return_sp = frame->fp() - 1313 Address return_sp = frame->fp() -
1314 InterpreterFrameConstants::kFixedFrameSizeFromFp - 1314 InterpreterFrameConstants::kFixedFrameSizeFromFp -
1315 register_slots * kPointerSize; 1315 register_slots * kPointerSize;
1316 1316
1317 // Patch the bytecode offset in the interpreted frame to reflect the 1317 // Patch the bytecode offset in the interpreted frame to reflect the
1318 // position of the exception handler. The special builtin below will 1318 // position of the exception handler. The special builtin below will
1319 // take care of continuing to dispatch at that position. Also restore 1319 // take care of continuing to dispatch at that position. Also restore
1320 // the correct context for the handler from the interpreter register. 1320 // the correct context for the handler from the interpreter register.
1321 CHECK(js_frame->ReadInterpreterRegister(context_reg)->IsContext());
1321 Context* context = 1322 Context* context =
1322 Context::cast(js_frame->ReadInterpreterRegister(context_reg)); 1323 Context::cast(js_frame->ReadInterpreterRegister(context_reg));
1323 js_frame->PatchBytecodeOffset(static_cast<int>(offset)); 1324 js_frame->PatchBytecodeOffset(static_cast<int>(offset));
1324 1325
1325 Code* code = *builtins()->InterpreterEnterBytecodeDispatch(); 1326 Code* code = *builtins()->InterpreterEnterBytecodeDispatch();
1326 return FoundHandler(context, code, 0, return_sp, frame->fp()); 1327 return FoundHandler(context, code, 0, return_sp, frame->fp());
1327 } 1328 }
1328 1329
1329 case StackFrame::JAVA_SCRIPT: 1330 case StackFrame::JAVA_SCRIPT:
1330 case StackFrame::BUILTIN: 1331 case StackFrame::BUILTIN:
(...skipping 2453 matching lines...) Expand 10 before | Expand all | Expand 10 after
3784 // Then check whether this scope intercepts. 3785 // Then check whether this scope intercepts.
3785 if ((flag & intercept_mask_)) { 3786 if ((flag & intercept_mask_)) {
3786 intercepted_flags_ |= flag; 3787 intercepted_flags_ |= flag;
3787 return true; 3788 return true;
3788 } 3789 }
3789 return false; 3790 return false;
3790 } 3791 }
3791 3792
3792 } // namespace internal 3793 } // namespace internal
3793 } // namespace v8 3794 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698