History

DisVM will now only use 0 initialized memory. - The alloc_memory function will only return 0 initialize memory - calloc_memory was removed

Floating point division is now relying on underlying FPU and IEEE for behavior with respect to divide by 0

arr committed 9 years ago

Commit b92328e1 parent bd1f49311 files · +48 −112Browse files

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

Unified · Split

src/vm/thread.cpp+4−3
@@ -255,7 +255,7 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 254 unmodified lines
255 }255 }
256 catch (const unhandled_user_exception &uue)256 catch (const unhandled_user_exception &uue)
257 {257 {
258 _error_message = calloc_memory<char>(max_error_message);258 _error_message = alloc_memory<char>(max_error_message);
259 const int ec = std::snprintf(_error_message, max_error_message, "%s in %s @%d\n %s", uue.what(), uue.module_name, uue.program_counter, uue.exception_id);259 const int ec = std::snprintf(_error_message, max_error_message, "%s in %s @%d\n %s", uue.what(), uue.module_name, uue.program_counter, uue.exception_id);
260 assert(ec > 0 && ec < max_error_message);260 assert(ec > 0 && ec < max_error_message);
261 (void)ec;261 (void)ec;
@@ -263,7 +263,7 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 1 unmodified line
263 }263 }
264 catch (const index_out_of_range_memory &ioor)264 catch (const index_out_of_range_memory &ioor)
265 {265 {
266 _error_message = calloc_memory<char>(max_error_message);266 _error_message = alloc_memory<char>(max_error_message);
267 const int ec = std::snprintf(_error_message, max_error_message, "%s - %d [%d,%d]", ioor.what(), ioor.invalid_value, ioor.valid_min, ioor.valid_max);267 const int ec = std::snprintf(_error_message, max_error_message, "%s - %d [%d,%d]", ioor.what(), ioor.invalid_value, ioor.valid_min, ioor.valid_max);
268 assert(ec > 0 && ec < max_error_message);268 assert(ec > 0 && ec < max_error_message);
269 (void)ec;269 (void)ec;
@@ -271,7 +271,8 @@ vm_thread_state_t vm_thread_t::execute(vm_t &vm, const uint32_t quanta) · 1 unmodified line
271 }271 }
272 catch (const vm_user_exception &ue)272 catch (const vm_user_exception &ue)
273 {273 {
274 _error_message = calloc_memory<char>(max_error_message);274 // [TODO] Include the module and IP to aid in debugging.
275 _error_message = alloc_memory<char>(max_error_message);
275 const int ec = std::snprintf(_error_message, max_error_message, "%s", ue.what());276 const int ec = std::snprintf(_error_message, max_error_message, "%s", ue.what());
276 assert(ec > 0 && ec < max_error_message);277 assert(ec > 0 && ec < max_error_message);
277 (void)ec;278 (void)ec;