Showing the changes to src/vm/vm.cpp (1 of 5 files). Show all
Unified · Split
| @@ -226,26 +226,32 @@ namespace · 225 unmodified lines | ||
| 226 | 226 | } |
| 227 | 227 | } |
| 228 | 228 | |
| 229 | −const vm_thread_t& vm_t::exec(const char *path) | |
| 229 | +uint32_t vm_t::exec(const char *path) | |
| 230 | 230 | { |
| 231 | 231 | assert(path != nullptr); |
| 232 | 232 | auto entry_module = load_module(path); |
| 233 | 233 | |
| 234 | 234 | auto entry_module_ref = std::make_unique<vm_module_ref_t>(entry_module); |
| 235 | 235 | auto thread = _create_thread_safe(std::move(entry_module_ref)); |
| 236 | − return schedule_thread(std::move(thread)); | |
| 236 | + | |
| 237 | + const auto thread_id = thread->get_thread_id(); | |
| 238 | + schedule_thread(std::move(thread)); | |
| 239 | + return thread_id; | |
| 237 | 240 | } |
| 238 | 241 | |
| 239 | −const vm_thread_t& vm_t::exec(std::unique_ptr<vm_module_t> entry_module) | |
| 242 | +uint32_t vm_t::exec(std::unique_ptr<vm_module_t> entry_module) | |
| 240 | 243 | { |
| 241 | 244 | assert(entry_module != nullptr); |
| 242 | 245 | |
| 243 | 246 | auto entry_module_ref = std::make_unique<vm_module_ref_t>(std::move(entry_module)); |
| 244 | 247 | auto thread = _create_thread_safe(std::move(entry_module_ref)); |
| 245 | − return schedule_thread(std::move(thread)); | |
| 248 | + | |
| 249 | + const auto thread_id = thread->get_thread_id(); | |
| 250 | + schedule_thread(std::move(thread)); | |
| 251 | + return thread_id; | |
| 246 | 252 | } |
| 247 | 253 | |
| 248 | −const vm_thread_t& vm_t::fork( | |
| 254 | +uint32_t vm_t::fork( | |
| 249 | 255 | const uint32_t parent_tid, |
| 250 | 256 | vm_module_ref_t &module_ref, |
| 251 | 257 | const vm_frame_t &initial_frame, |
| @@ -255,7 +261,10 @@ const vm_thread_t& vm_t::fork( · 3 unmodified lines | ||
| 255 | 261 | throw vm_user_exception{ "Invalid entry program counter" }; |
| 256 | 262 | |
| 257 | 263 | auto thread = std::make_unique<vm_thread_t>(module_ref, parent_tid, initial_frame, initial_pc); |
| 258 | − return schedule_thread(std::move(thread)); | |
| 264 | + | |
| 265 | + const auto thread_id = thread->get_thread_id(); | |
| 266 | + schedule_thread(std::move(thread)); | |
| 267 | + return thread_id; | |
| 259 | 268 | } |
| 260 | 269 | |
| 261 | 270 | namespace |
| @@ -445,7 +454,7 @@ void vm_t::unload_tool(std::size_t tool_id) · 183 unmodified lines | ||
| 445 | 454 | } |
| 446 | 455 | } |
| 447 | 456 | |
| 448 | −const vm_thread_t &vm_t::schedule_thread(std::unique_ptr<vm_thread_t> thread) | |
| 457 | +void vm_t::schedule_thread(std::unique_ptr<vm_thread_t> thread) | |
| 449 | 458 | { |
| 450 | 459 | assert(thread != nullptr); |
| 451 | 460 | |
| @@ -459,5 +468,5 @@ const vm_thread_t &vm_t::schedule_thread(std::unique_ptr<vm_thread_t> thread) · 7 unmodified lines | ||
| 459 | 468 | } |
| 460 | 469 | } |
| 461 | 470 | |
| 462 | − return _scheduler->schedule_thread(std::move(thread)); | |
| 471 | + _scheduler->schedule_thread(std::move(thread)); | |
| 463 | 472 | } |