History

Alter VM fork() API to just consume the ID of the parent rather than the parent instance.

arr committed 10 years ago

Commit fcc75fd1 parent 093cfc13 files · +5 −5Browse files

Showing the changes to src (3 of 3 files). Show all

Unified · Split

3 files
  1. src/include/disvm.h +1 −1
  2. src/vm/execution_table.cpp +2 −2
  3. src/vm/vm.cpp +2 −2
src/include/disvm.h+1−1
@@ -84,7 +84,7 @@ namespace disvm · 83 unmodified lines
8484
8585 // Begin execution of a child thread in the supplied module at the indicated program counter
8686 const runtime::vm_thread_t& fork(
87− const runtime::vm_thread_t &parent,
87+ const uint32_t parent_tid,
8888 runtime::vm_module_ref_t &module_ref,
8989 const runtime::vm_frame_t &initial_frame,
9090 runtime::vm_pc_t initial_pc);
src/vm/execution_table.cpp+2−2
@@ -1584,7 +1584,7 @@ namespace · 1583 unmodified lines
15841584 const auto starting_pc = vt_ref<vm_pc_t>(r.dest);
15851585
15861586 assert(r.module_ref != nullptr);
1587− vm.fork(r.thread, *r.module_ref, *spawned_frame, starting_pc);
1587+ vm.fork(r.thread.get_thread_id(), *r.module_ref, *spawned_frame, starting_pc);
15881588
15891589 // After the new thread is forked pop off the argument passing frame.
15901590 r.stack.pop_frame();
@@ -1613,7 +1613,7 @@ namespace · 22 unmodified lines
16131613 if (target_module_ref->is_builtin_module())
16141614 throw vm_user_exception{ "Spawning a built-in module is not permitted" };
16151615
1616− vm.fork(r.thread, *target_module_ref, *spawned_frame, function_ref.entry_pc);
1616+ vm.fork(r.thread.get_thread_id(), *target_module_ref, *spawned_frame, function_ref.entry_pc);
16171617
16181618 // After the new thread is forked pop off the argument passing frame.
16191619 r.stack.pop_frame();
src/vm/vm.cpp+2−2
@@ -104,7 +104,7 @@ const runtime::vm_thread_t& vm_t::exec(std::unique_ptr<runtime::vm_module_t> ent · 103 unmodified lines
104104 }
105105
106106 const runtime::vm_thread_t& vm_t::fork(
107− const runtime::vm_thread_t &parent,
107+ const uint32_t parent_tid,
108108 runtime::vm_module_ref_t &module_ref,
109109 const runtime::vm_frame_t &initial_frame,
110110 runtime::vm_pc_t initial_pc)
@@ -112,7 +112,7 @@ const runtime::vm_thread_t& vm_t::fork( · 1 unmodified line
112112 if (initial_pc < 0 || static_cast<vm_pc_t>(module_ref.code_section.size()) <= initial_pc)
113113 throw vm_system_exception{ "Invalid entry program counter" };
114114
115− auto thread = std::make_unique<vm_thread_t>(module_ref, parent.get_thread_id(), initial_frame, initial_pc);
115+ auto thread = std::make_unique<vm_thread_t>(module_ref, parent_tid, initial_frame, initial_pc);
116116 return schedule_thread(std::move(thread));
117117 }
118118