OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 "vm/runtime_entry.h" | 5 #include "vm/runtime_entry.h" |
6 | 6 |
7 #include "vm/assembler.h" | 7 #include "vm/assembler.h" |
8 #include "vm/ast.h" | 8 #include "vm/ast.h" |
9 #include "vm/code_patcher.h" | 9 #include "vm/code_patcher.h" |
10 #include "vm/compiler.h" | 10 #include "vm/compiler.h" |
(...skipping 1686 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1697 // recursive stack trace collection. | 1697 // recursive stack trace collection. |
1698 intptr_t saved_stacktrace_every = FLAG_stacktrace_every; | 1698 intptr_t saved_stacktrace_every = FLAG_stacktrace_every; |
1699 FLAG_stacktrace_every = 0; | 1699 FLAG_stacktrace_every = 0; |
1700 DebuggerStackTrace* stack = isolate->debugger()->StackTrace(); | 1700 DebuggerStackTrace* stack = isolate->debugger()->StackTrace(); |
1701 intptr_t num_frames = stack->Length(); | 1701 intptr_t num_frames = stack->Length(); |
1702 for (intptr_t i = 0; i < num_frames; i++) { | 1702 for (intptr_t i = 0; i < num_frames; i++) { |
1703 ActivationFrame* frame = stack->FrameAt(i); | 1703 ActivationFrame* frame = stack->FrameAt(i); |
1704 #ifndef DART_PRECOMPILED_RUNTIME | 1704 #ifndef DART_PRECOMPILED_RUNTIME |
1705 // Ensure that we have unoptimized code. | 1705 // Ensure that we have unoptimized code. |
1706 frame->function().EnsureHasCompiledUnoptimizedCode(); | 1706 frame->function().EnsureHasCompiledUnoptimizedCode(); |
1707 const int num_vars = frame->NumLocalVariables(); | 1707 #endif |
1708 #else | |
1709 // Variable locations and number are unknown when precompiling. | 1708 // Variable locations and number are unknown when precompiling. |
1710 const int num_vars = 0; | 1709 const int num_vars = |
1711 #endif | 1710 FLAG_precompiled_runtime ? 0 : frame->NumLocalVariables(); |
1712 TokenPosition unused = TokenPosition::kNoSource; | 1711 TokenPosition unused = TokenPosition::kNoSource; |
1713 for (intptr_t v = 0; v < num_vars; v++) { | 1712 for (intptr_t v = 0; v < num_vars; v++) { |
1714 frame->VariableAt(v, &var_name, &unused, &unused, &unused, &var_value); | 1713 frame->VariableAt(v, &var_name, &unused, &unused, &unused, &var_value); |
1715 } | 1714 } |
1716 } | 1715 } |
1717 if (FLAG_stress_async_stacks) { | 1716 if (FLAG_stress_async_stacks) { |
1718 Debugger::CollectAwaiterReturnStackTrace(); | 1717 Debugger::CollectAwaiterReturnStackTrace(); |
1719 } | 1718 } |
1720 FLAG_stacktrace_every = saved_stacktrace_every; | 1719 FLAG_stacktrace_every = saved_stacktrace_every; |
1721 } | 1720 } |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2277 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); | 2276 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); |
2278 const Object& value = Object::Handle(arguments.ArgAt(1)); | 2277 const Object& value = Object::Handle(arguments.ArgAt(1)); |
2279 field.RecordStore(value); | 2278 field.RecordStore(value); |
2280 } | 2279 } |
2281 | 2280 |
2282 DEFINE_RUNTIME_ENTRY(InitStaticField, 1) { | 2281 DEFINE_RUNTIME_ENTRY(InitStaticField, 1) { |
2283 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); | 2282 const Field& field = Field::CheckedHandle(arguments.ArgAt(0)); |
2284 field.EvaluateInitializer(); | 2283 field.EvaluateInitializer(); |
2285 } | 2284 } |
2286 | 2285 |
2287 // Print the stop message. | |
2288 DEFINE_LEAF_RUNTIME_ENTRY(void, PrintStopMessage, 1, const char* message) { | |
2289 OS::Print("Stop message: %s\n", message); | |
2290 } | |
2291 END_LEAF_RUNTIME_ENTRY | |
2292 | |
2293 // Use expected function signatures to help MSVC compiler resolve overloading. | 2286 // Use expected function signatures to help MSVC compiler resolve overloading. |
2294 typedef double (*UnaryMathCFunction)(double x); | 2287 typedef double (*UnaryMathCFunction)(double x); |
2295 typedef double (*BinaryMathCFunction)(double x, double y); | 2288 typedef double (*BinaryMathCFunction)(double x, double y); |
2296 | 2289 |
2297 DEFINE_RAW_LEAF_RUNTIME_ENTRY( | 2290 DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
2298 LibcPow, | 2291 LibcPow, |
2299 2, | 2292 2, |
2300 true /* is_float */, | 2293 true /* is_float */, |
2301 reinterpret_cast<RuntimeFunction>(static_cast<BinaryMathCFunction>(&pow))); | 2294 reinterpret_cast<RuntimeFunction>(static_cast<BinaryMathCFunction>(&pow))); |
2302 | 2295 |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2368 true /* is_float */, | 2361 true /* is_float */, |
2369 reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&tan))); | 2362 reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&tan))); |
2370 | 2363 |
2371 DEFINE_RAW_LEAF_RUNTIME_ENTRY( | 2364 DEFINE_RAW_LEAF_RUNTIME_ENTRY( |
2372 LibcAtan, | 2365 LibcAtan, |
2373 1, | 2366 1, |
2374 true /* is_float */, | 2367 true /* is_float */, |
2375 reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&atan))); | 2368 reinterpret_cast<RuntimeFunction>(static_cast<UnaryMathCFunction>(&atan))); |
2376 | 2369 |
2377 } // namespace dart | 2370 } // namespace dart |
OLD | NEW |