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/dart_entry.h" | 5 #include "vm/dart_entry.h" |
6 | 6 |
7 #include "vm/code_generator.h" | 7 #include "vm/code_generator.h" |
8 #include "vm/compiler.h" | 8 #include "vm/compiler.h" |
| 9 #include "vm/debugger.h" |
9 #include "vm/object_store.h" | 10 #include "vm/object_store.h" |
10 #include "vm/resolver.h" | 11 #include "vm/resolver.h" |
11 #include "vm/simulator.h" | 12 #include "vm/simulator.h" |
12 #include "vm/stub_code.h" | 13 #include "vm/stub_code.h" |
13 #include "vm/symbols.h" | 14 #include "vm/symbols.h" |
14 | 15 |
15 namespace dart { | 16 namespace dart { |
16 | 17 |
17 // A cache of VM heap allocated arguments descriptors. | 18 // A cache of VM heap allocated arguments descriptors. |
18 RawArray* ArgumentsDescriptor::cached_args_descriptors_[kCachedDescriptorCount]; | 19 RawArray* ArgumentsDescriptor::cached_args_descriptors_[kCachedDescriptorCount]; |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
414 function_name, | 415 function_name, |
415 kNumArguments, | 416 kNumArguments, |
416 Object::empty_array(), | 417 Object::empty_array(), |
417 Resolver::kIsQualified); | 418 Resolver::kIsQualified); |
418 isolate->object_store()->set_handle_message_function(function); | 419 isolate->object_store()->set_handle_message_function(function); |
419 } | 420 } |
420 const Array& args = Array::Handle(isolate, Array::New(kNumArguments)); | 421 const Array& args = Array::Handle(isolate, Array::New(kNumArguments)); |
421 args.SetAt(0, receive_port); | 422 args.SetAt(0, receive_port); |
422 args.SetAt(1, Integer::Handle(isolate, Integer::New(reply_port_id))); | 423 args.SetAt(1, Integer::Handle(isolate, Integer::New(reply_port_id))); |
423 args.SetAt(2, message); | 424 args.SetAt(2, message); |
| 425 if (isolate->debugger()->IsStepping()) { |
| 426 // If the isolate is being debugged and the debugger was stepping |
| 427 // through code, enable single stepping so debugger will stop |
| 428 // at the first location the user is interested in. |
| 429 isolate->debugger()->SetSingleStep(); |
| 430 } |
424 const Object& result = | 431 const Object& result = |
425 Object::Handle(isolate, DartEntry::InvokeFunction(function, args)); | 432 Object::Handle(isolate, DartEntry::InvokeFunction(function, args)); |
426 ASSERT(result.IsNull() || result.IsError()); | 433 ASSERT(result.IsNull() || result.IsError()); |
427 return result.raw(); | 434 return result.raw(); |
428 } | 435 } |
429 | 436 |
430 | 437 |
431 RawObject* DartLibraryCalls::NewSendPort(intptr_t port_id) { | 438 RawObject* DartLibraryCalls::NewSendPort(intptr_t port_id) { |
432 Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); | 439 Library& isolate_lib = Library::Handle(Library::IsolateLibrary()); |
433 ASSERT(!isolate_lib.IsNull()); | 440 ASSERT(!isolate_lib.IsNull()); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 String::Handle(Field::GetterName(Symbols::_id())))); | 484 String::Handle(Field::GetterName(Symbols::_id())))); |
478 const Function& func = Function::Handle(cls.LookupDynamicFunction(func_name)); | 485 const Function& func = Function::Handle(cls.LookupDynamicFunction(func_name)); |
479 ASSERT(!func.IsNull()); | 486 ASSERT(!func.IsNull()); |
480 const Array& args = Array::Handle(Array::New(1)); | 487 const Array& args = Array::Handle(Array::New(1)); |
481 args.SetAt(0, port); | 488 args.SetAt(0, port); |
482 return DartEntry::InvokeFunction(func, args); | 489 return DartEntry::InvokeFunction(func, args); |
483 } | 490 } |
484 | 491 |
485 | 492 |
486 } // namespace dart | 493 } // namespace dart |
OLD | NEW |