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

Side by Side Diff: src/deoptimizer.cc

Issue 1633633002: [Interpreter] Fix deopting from inline functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 11 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
« no previous file with comments | « src/builtins.h ('k') | src/frames.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/deoptimizer.h" 5 #include "src/deoptimizer.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/ast/prettyprinter.h" 8 #include "src/ast/prettyprinter.h"
9 #include "src/codegen.h" 9 #include "src/codegen.h"
10 #include "src/disasm.h" 10 #include "src/disasm.h"
(...skipping 1193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 } 1204 }
1205 CHECK_EQ(0u, output_offset); 1205 CHECK_EQ(0u, output_offset);
1206 1206
1207 // Set the accumulator register. 1207 // Set the accumulator register.
1208 output_frame->SetRegister( 1208 output_frame->SetRegister(
1209 kInterpreterAccumulatorRegister.code(), 1209 kInterpreterAccumulatorRegister.code(),
1210 reinterpret_cast<intptr_t>(value_iterator->GetRawValue())); 1210 reinterpret_cast<intptr_t>(value_iterator->GetRawValue()));
1211 value_iterator++; 1211 value_iterator++;
1212 1212
1213 Builtins* builtins = isolate_->builtins(); 1213 Builtins* builtins = isolate_->builtins();
1214 Code* trampoline = builtins->builtin(Builtins::kInterpreterEntryTrampoline); 1214 Code* dispatch_builtin =
1215 output_frame->SetPc(reinterpret_cast<intptr_t>(trampoline->entry())); 1215 builtins->builtin(Builtins::kInterpreterEnterBytecodeDispatch);
1216 output_frame->SetPc(reinterpret_cast<intptr_t>(dispatch_builtin->entry()));
1216 output_frame->SetState(0); 1217 output_frame->SetState(0);
1217 1218
1218 // Update constant pool. 1219 // Update constant pool.
1219 if (FLAG_enable_embedded_constant_pool) { 1220 if (FLAG_enable_embedded_constant_pool) {
1220 intptr_t constant_pool_value = 1221 intptr_t constant_pool_value =
1221 reinterpret_cast<intptr_t>(trampoline->constant_pool()); 1222 reinterpret_cast<intptr_t>(dispatch_builtin->constant_pool());
1222 output_frame->SetConstantPool(constant_pool_value); 1223 output_frame->SetConstantPool(constant_pool_value);
1223 if (is_topmost) { 1224 if (is_topmost) {
1224 Register constant_pool_reg = 1225 Register constant_pool_reg =
1225 InterpretedFrame::constant_pool_pointer_register(); 1226 InterpretedFrame::constant_pool_pointer_register();
1226 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value); 1227 output_frame->SetRegister(constant_pool_reg.code(), constant_pool_value);
1227 } 1228 }
1228 } 1229 }
1229 1230
1230 // Set the continuation for the topmost frame. 1231 // Set the continuation for the topmost frame.
1231 if (is_topmost && bailout_type_ != DEBUGGER) { 1232 if (is_topmost && bailout_type_ != DEBUGGER) {
(...skipping 2477 matching lines...) Expand 10 before | Expand all | Expand 10 after
3709 DCHECK(value_info->IsMaterializedObject()); 3710 DCHECK(value_info->IsMaterializedObject());
3710 3711
3711 value_info->value_ = 3712 value_info->value_ =
3712 Handle<Object>(previously_materialized_objects->get(i), isolate_); 3713 Handle<Object>(previously_materialized_objects->get(i), isolate_);
3713 } 3714 }
3714 } 3715 }
3715 } 3716 }
3716 3717
3717 } // namespace internal 3718 } // namespace internal
3718 } // namespace v8 3719 } // namespace v8
OLDNEW
« no previous file with comments | « src/builtins.h ('k') | src/frames.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698