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

Side by Side Diff: runtime/vm/simulator_dbc.cc

Issue 2418673002: Fix unoptimized code calling a disabled code when --verify-on-transition is enabled. (Closed)
Patch Set: dbc Created 4 years, 2 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 | « runtime/vm/code_generator.cc ('k') | runtime/vm/stub_code_arm.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 (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include <setjmp.h> // NOLINT 5 #include <setjmp.h> // NOLINT
6 #include <stdlib.h> 6 #include <stdlib.h>
7 7
8 #include "vm/globals.h" 8 #include "vm/globals.h"
9 #if defined(TARGET_ARCH_DBC) 9 #if defined(TARGET_ARCH_DBC)
10 10
(...skipping 1191 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 f->ptr()->usage_counter_ = counter; 1202 f->ptr()->usage_counter_ = counter;
1203 } 1203 }
1204 if (counter >= threshold) { 1204 if (counter >= threshold) {
1205 FP[0] = f; 1205 FP[0] = f;
1206 FP[1] = 0; 1206 FP[1] = 0;
1207 Exit(thread, FP, FP + 2, pc); 1207 Exit(thread, FP, FP + 2, pc);
1208 NativeArguments args(thread, 1, FP, FP + 1); 1208 NativeArguments args(thread, 1, FP, FP + 1);
1209 INVOKE_RUNTIME(DRT_OptimizeInvokedFunction, args); 1209 INVOKE_RUNTIME(DRT_OptimizeInvokedFunction, args);
1210 { 1210 {
1211 // DRT_OptimizeInvokedFunction returns the code object to execute. 1211 // DRT_OptimizeInvokedFunction returns the code object to execute.
1212 ASSERT(FP[1]->GetClassId() == kCodeCid); 1212 ASSERT(FP[1]->GetClassId() == kFunctionCid);
1213 RawCode* code = static_cast<RawCode*>(FP[1]); 1213 RawFunction* function = static_cast<RawFunction*>(FP[1]);
1214 RawCode* code = function->ptr()->code_;
1214 SimulatorHelpers::SetFrameCode(FP, code); 1215 SimulatorHelpers::SetFrameCode(FP, code);
1215 pp = code->ptr()->object_pool_->ptr(); 1216 pp = code->ptr()->object_pool_->ptr();
1216 pc = reinterpret_cast<uint32_t*>(code->ptr()->entry_point_); 1217 pc = reinterpret_cast<uint32_t*>(function->ptr()->entry_point_);
1217 pc_ = reinterpret_cast<uword>(pc); // For the profiler. 1218 pc_ = reinterpret_cast<uword>(pc); // For the profiler.
1218 } 1219 }
1219 } 1220 }
1220 DISPATCH(); 1221 DISPATCH();
1221 } 1222 }
1222 1223
1223 { 1224 {
1224 BYTECODE(CheckStack, A); 1225 BYTECODE(CheckStack, A);
1225 { 1226 {
1226 if (reinterpret_cast<uword>(SP) >= thread->stack_limit()) { 1227 if (reinterpret_cast<uword>(SP) >= thread->stack_limit()) {
(...skipping 2266 matching lines...) Expand 10 before | Expand all | Expand 10 after
3493 pc_ = pc; 3494 pc_ = pc;
3494 special_[kExceptionSpecialIndex] = raw_exception; 3495 special_[kExceptionSpecialIndex] = raw_exception;
3495 special_[kStacktraceSpecialIndex] = raw_stacktrace; 3496 special_[kStacktraceSpecialIndex] = raw_stacktrace;
3496 buf->Longjmp(); 3497 buf->Longjmp();
3497 UNREACHABLE(); 3498 UNREACHABLE();
3498 } 3499 }
3499 3500
3500 } // namespace dart 3501 } // namespace dart
3501 3502
3502 #endif // defined TARGET_ARCH_DBC 3503 #endif // defined TARGET_ARCH_DBC
OLDNEW
« no previous file with comments | « runtime/vm/code_generator.cc ('k') | runtime/vm/stub_code_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698