Skip to content

Commit

Permalink
refactor: remove obsolete functions, codegolf in scheduler
Browse files Browse the repository at this point in the history
  • Loading branch information
localvoid committed May 23, 2018
1 parent e6d3f1e commit 3c3f65f
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 66 deletions.
25 changes: 0 additions & 25 deletions packages/ivi-events/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,28 +98,3 @@ export function getNativeEventOptions(
}
return false;
}

/**
* setEventHandlersToDOMNode assigns a event handlers to the DOM node.
*
* @param node DOM Node.
* @param events Event Handlers.
*/
export function setEventHandlersToDOMNode(
node: Element,
events: Array<EventHandler | null> | EventHandler | null,
): void {
node._ev = events;
}

/**
* getEventHandlersFromDOMNode retrieves event handlers from the DOM node.
*
* @param node DOM Node.
* @returns Event Handlers.
*/
export function getEventHandlersFromDOMNode(
node: Element,
): Array<EventHandler | null> | EventHandler | undefined | null {
return node._ev;
}
74 changes: 37 additions & 37 deletions packages/ivi-scheduler/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ const enum FrameTasksGroupFlags {
}

interface TaskList {
tasks: Array<() => void>;
a: Array<() => void>;
}

/**
Expand All @@ -44,14 +44,14 @@ interface TaskList {
* @returns Task list.
*/
function createTaskList(): TaskList {
return { tasks: [] };
return { a: [] };
}

function run(t: TaskList) {
const tasks = t.tasks;
t.tasks = [];
for (let i = 0; i < tasks.length; ++i) {
tasks[i]();
const tasks = t.a;
t.a = [];
for (const task of tasks) {
task();
}
}

Expand All @@ -65,27 +65,27 @@ interface FrameTasksGroup {
/**
* See `FrameTasksGroupFlags` for details.
*/
flags: number;
f: number;
/**
* Write DOM task queue.
*/
write: TaskList;
w: TaskList;
/**
* Read DOM task queue.
*/
read: TaskList;
r: TaskList;
/**
* Tasks that should be executed when all other frame tasks are finished.
*/
after: TaskList;
a: TaskList;
}

function createFrameTasksGroup(): FrameTasksGroup {
return {
flags: 0,
write: createTaskList(),
read: createTaskList(),
after: createTaskList(),
f: 0,
w: createTaskList(),
r: createTaskList(),
a: createTaskList(),
};
}

Expand All @@ -106,7 +106,7 @@ let _currentFrameStartTime = 0;
let _autofocusedElement: Element | null = null;

const runMicrotasks = catchError(() => {
while (_microtasks.tasks.length > 0) {
while (_microtasks.a.length > 0) {
run(_microtasks);
}

Expand Down Expand Up @@ -176,7 +176,7 @@ export function scheduleMicrotask(task: () => void): void {
_flags |= SchedulerFlags.MicrotaskPending;
Promise.resolve().then(runMicrotasks);
}
_microtasks.tasks.push(task);
_microtasks.a.push(task);
}

/**
Expand All @@ -189,7 +189,7 @@ export function scheduleTask(task: () => void): void {
_flags |= SchedulerFlags.TaskPending;
_taskChannel.port2.postMessage(0);
}
_tasks.tasks.push(task);
_tasks.a.push(task);
}

export function isHidden(): boolean {
Expand Down Expand Up @@ -287,23 +287,23 @@ const _handleNextFrame = catchError((time: number) => {
// Perform read/write batching. Start with executing read DOM tasks, then update components, execute write DOM tasks
// and repeat until all read and write tasks are executed.
do {
while (frame.flags & FrameTasksGroupFlags.Read) {
frame.flags ^= FrameTasksGroupFlags.Read;
run(frame.read);
while (frame.f & FrameTasksGroupFlags.Read) {
frame.f ^= FrameTasksGroupFlags.Read;
run(frame.r);
}

while (frame.flags & (FrameTasksGroupFlags.Update | FrameTasksGroupFlags.Write)) {
if (frame.flags & FrameTasksGroupFlags.Write) {
frame.flags ^= FrameTasksGroupFlags.Write;
run(frame.write);
while (frame.f & (FrameTasksGroupFlags.Update | FrameTasksGroupFlags.Write)) {
if (frame.f & FrameTasksGroupFlags.Write) {
frame.f ^= FrameTasksGroupFlags.Write;
run(frame.w);
}

if (frame.flags & FrameTasksGroupFlags.Update) {
frame.flags ^= FrameTasksGroupFlags.Update;
if (frame.f & FrameTasksGroupFlags.Update) {
frame.f ^= FrameTasksGroupFlags.Update;
_updateDOMHandler();
}
}
} while (frame.flags & (
} while (frame.f & (
FrameTasksGroupFlags.Update |
FrameTasksGroupFlags.Write |
FrameTasksGroupFlags.Read
Expand All @@ -316,9 +316,9 @@ const _handleNextFrame = catchError((time: number) => {
}

// Perform tasks that should be executed when all DOM ops are finished.
while ((frame.flags & FrameTasksGroupFlags.After)) {
frame.flags ^= FrameTasksGroupFlags.After;
run(frame.after);
while ((frame.f & FrameTasksGroupFlags.After)) {
frame.f ^= FrameTasksGroupFlags.After;
run(frame.a);
}

if (_autofocusedElement !== null) {
Expand All @@ -334,22 +334,22 @@ const _handleNextFrame = catchError((time: number) => {
});

function addFrameTaskUpdate(frame: FrameTasksGroup): void {
frame.flags |= FrameTasksGroupFlags.Update;
frame.f |= FrameTasksGroupFlags.Update;
}

function addFrameTaskWrite(frame: FrameTasksGroup, task: () => void): void {
frame.flags |= FrameTasksGroupFlags.Write;
frame.write.tasks.push(task);
frame.f |= FrameTasksGroupFlags.Write;
frame.w.a.push(task);
}

function addFrameTaskRead(frame: FrameTasksGroup, task: () => void): void {
frame.flags |= FrameTasksGroupFlags.Read;
frame.read.tasks.push(task);
frame.f |= FrameTasksGroupFlags.Read;
frame.r.a.push(task);
}

function addFrameTaskAfter(frame: FrameTasksGroup, task: () => void): void {
frame.flags |= FrameTasksGroupFlags.After;
frame.after.tasks.push(task);
frame.f |= FrameTasksGroupFlags.After;
frame.a.a.push(task);
}

export function nextFrameUpdate(): void {
Expand Down
8 changes: 4 additions & 4 deletions packages/ivi/src/vdom/root.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export const ROOTS = [] as Root[];
*/
const EMPTY_CONTEXT = {};

let _pendingUpdate = false;
let _pendingUpdate = 0;

/**
* Find Root node in container.
Expand All @@ -45,7 +45,7 @@ export function findRoot(container: Element): Root | void {
*/
function _update() {
if (_pendingUpdate) {
_pendingUpdate = false;
_pendingUpdate = 0;
setUpdateDOMHandler(update);
for (let i = 0; i < ROOTS.length; ++i) {
const root = ROOTS[i];
Expand Down Expand Up @@ -130,7 +130,7 @@ export function renderNextFrame(vnode: VNode | null, container: Element): void {
root.invalidated = true;
} else {
ROOTS.push({
container: container,
container,
currentVNode: null,
newVNode: vnode,
invalidated: true,
Expand All @@ -153,7 +153,7 @@ export function update() {
*/
export function updateNextFrame() {
if (!_pendingUpdate) {
_pendingUpdate = true;
_pendingUpdate = 1;
nextFrameWrite(_update);
}
}

0 comments on commit 3c3f65f

Please sign in to comment.