History

Remove vm_thread reference from exec/fork vm functions.

arr committed 9 years ago

Commit a64d7751 parent 98ad0165 files · +30 −23Browse files

Showing the changes to src/vm/vm.cpp (1 of 5 files). Show all

Unified · Split

src/vm/vm.cpp+17−8
@@ -226,26 +226,32 @@ namespace · 225 unmodified lines
226226 }
227227 }
228228
229−const vm_thread_t& vm_t::exec(const char *path)
229+uint32_t vm_t::exec(const char *path)
230230 {
231231 assert(path != nullptr);
232232 auto entry_module = load_module(path);
233233
234234 auto entry_module_ref = std::make_unique<vm_module_ref_t>(entry_module);
235235 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;
237240 }
238241
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)
240243 {
241244 assert(entry_module != nullptr);
242245
243246 auto entry_module_ref = std::make_unique<vm_module_ref_t>(std::move(entry_module));
244247 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;
246252 }
247253
248−const vm_thread_t& vm_t::fork(
254+uint32_t vm_t::fork(
249255 const uint32_t parent_tid,
250256 vm_module_ref_t &module_ref,
251257 const vm_frame_t &initial_frame,
@@ -255,7 +261,10 @@ const vm_thread_t& vm_t::fork( · 3 unmodified lines
255261 throw vm_user_exception{ "Invalid entry program counter" };
256262
257263 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;
259268 }
260269
261270 namespace
@@ -445,7 +454,7 @@ void vm_t::unload_tool(std::size_t tool_id) · 183 unmodified lines
445454 }
446455 }
447456
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)
449458 {
450459 assert(thread != nullptr);
451460
@@ -459,5 +468,5 @@ const vm_thread_t &vm_t::schedule_thread(std::unique_ptr<vm_thread_t> thread) · 7 unmodified lines
459468 }
460469 }
461470
462− return _scheduler->schedule_thread(std::move(thread));
471+ _scheduler->schedule_thread(std::move(thread));
463472 }