public static ScriptRuntime CreateRuntime(bool isEditorRuntime) { if (!JSApi.IsValid()) { throw new InvalidOperationException("quickjs library is not matched, you need to rebuild it for current platform"); } _rwlock.EnterWriteLock(); ScriptRuntimeRef freeEntry; int slotIndex; if (_freeSlot < 0) { freeEntry = new ScriptRuntimeRef(); slotIndex = _runtimeRefs.Count; _runtimeRefs.Add(freeEntry); freeEntry.next = -1; } else { slotIndex = _freeSlot; freeEntry = _runtimeRefs[slotIndex]; _freeSlot = freeEntry.next; freeEntry.next = -1; } var runtime = new ScriptRuntime(slotIndex + 1); freeEntry.target = runtime; freeEntry.isEditorRuntime = isEditorRuntime; runtime.OnAfterDestroy += OnRuntimeAfterDestroy; _rwlock.ExitWriteLock(); return(runtime); }
public static ScriptRuntime CreateRuntime(bool isEditorRuntime) { _rwlock.EnterWriteLock(); ScriptRuntimeRef freeEntry; int slotIndex; if (_freeSlot < 0) { freeEntry = new ScriptRuntimeRef(); slotIndex = _runtimeRefs.Count; _runtimeRefs.Add(freeEntry); freeEntry.next = -1; } else { slotIndex = _freeSlot; freeEntry = _runtimeRefs[slotIndex]; _freeSlot = freeEntry.next; freeEntry.next = -1; } var runtime = new ScriptRuntime(slotIndex + 1); freeEntry.target = runtime; freeEntry.isEditorRuntime = isEditorRuntime; runtime.OnAfterDestroy += OnRuntimeAfterDestroy; _rwlock.ExitWriteLock(); return(runtime); }