JS: avoid a locking deadlock trying to show the LogBox window

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: remove the unused time argument from getRegionTrans

This was originally intended to allow interpolated region transforms, but was
never implemented, remove it for now.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: wrap internal Event state in getter functions

This leaves the option open later to use a mem pool of event structs.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
Test: add performance tests for some basic event scheduling routines

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: Replace EntityDelay's entity list with a HashMap

This was prohibitively slow for some benchmarks.

Signed-off-by: Matt Chudleigh <matt.chudleigh@ausenco.com>
Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: use a single HashMap to track entity position in EntityDelay

Reduces the lookup overhead and the storage requirements.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: store a copy of the ticks->seconds factor in the gui code

This is for use by the graphics callbacks when rendering, separate from the model value.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: move remaining time conversion APIs from Process to Simulation

This legacy API converting ticks to hours is still kept around, but moved as Process
will be hidden shortly.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: move API for testing if a thread is inside a running model to EventManager

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: move conditional wait debug helper into EventManager

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: add an optional EventHandle to the waiting API

This allows us to pass a cookie we can use to interrupt or kill the schedule event
with at a later time.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: begin moving to EventHandle as the primary way of interrupting/killing events

Replace the ProcessTarget based API.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: use binary search to find a better spot to start looking for events to kill

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: add API for interrupting an EventHandle

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: add and API to pass EventHandles to scheduleWait

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: avoid deadlocking external code against the event execution

In purely event-driven models, we no longer drop the lockObject between events,
which can lead to very long hold-off times on that lock for external (ui) threads
trying to update the real time state.

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>
JS: update version to 2014-18

Signed-off-by: Harvey Harrison <harvey.harrison@ausenco.com>