Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - Execution stack & promises #2107

Closed
wants to merge 13 commits into from
Closed

Conversation

Razican
Copy link
Member

@Razican Razican commented Jun 8, 2022

This PR overrides #1923. It also removes the queues dependency added there, and rebases it to the latest main branch state.

It adds the following:

An example program that shows the control flow with this addition is:

new Promise((res, rej) => {
  console.log("A");
  res(undefined);
}).then((_) => console.log("B"));
console.log("C");

Which would output:

A
C
B

@Razican Razican added enhancement New feature or request builtins PRs and Issues related to builtins/intrinsics labels Jun 8, 2022
@Razican Razican added this to the v0.16.0 milestone Jun 8, 2022
@Razican
Copy link
Member Author

Razican commented Jun 8, 2022

Note: it still requires bringing the enhancements proposed by multiple members of the team.

@github-actions
Copy link

github-actions bot commented Jun 8, 2022

Test262 conformance changes

VM implementation

Test result main count PR count difference
Total 90,499 90,499 0
Passed 56,518 56,837 +319
Ignored 23,580 13,648 -9,932
Failed 10,401 20,014 +9,613
Panics 0 0 0
Conformance 62.45% 62.80% +0.35%
Fixed tests (319):
test/harness/timer.js [strict mode] (previously Failed)
test/harness/timer.js (previously Failed)
test/built-ins/Promise/resolve-function-property-order.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-property-order.js (previously Failed)
test/built-ins/Promise/reject-function-name.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-name.js (previously Failed)
test/built-ins/Promise/resolve-prms-cstm-then-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-prms-cstm-then-immed.js (previously Ignored)
test/built-ins/Promise/reject-ignored-via-fn-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-ignored-via-fn-immed.js (previously Ignored)
test/built-ins/Promise/executor-function-length.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-length.js (previously Failed)
test/built-ins/Promise/executor-function-not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-not-a-constructor.js (previously Failed)
test/built-ins/Promise/executor-function-name.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-name.js (previously Failed)
test/built-ins/Promise/resolve-non-obj-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-non-obj-immed.js (previously Ignored)
test/built-ins/Promise/resolve-self.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-self.js (previously Ignored)
test/built-ins/Promise/reject-via-abrupt.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-via-abrupt.js (previously Ignored)
test/built-ins/Promise/executor-function-prototype.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-prototype.js (previously Failed)
test/built-ins/Promise/executor-function-extensible.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-extensible.js (previously Failed)
test/built-ins/Promise/resolve-non-thenable-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-non-thenable-deferred.js (previously Ignored)
test/built-ins/Promise/executor-function-property-order.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-function-property-order.js (previously Failed)
test/built-ins/Promise/resolve-function-nonconstructor.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-nonconstructor.js (previously Failed)
test/built-ins/Promise/resolve-prms-cstm-then-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-prms-cstm-then-deferred.js (previously Ignored)
test/built-ins/Promise/resolve-non-thenable-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-non-thenable-immed.js (previously Ignored)
test/built-ins/Promise/resolve-poisoned-then-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-poisoned-then-deferred.js (previously Ignored)
test/built-ins/Promise/resolve-ignored-via-fn-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-ignored-via-fn-deferred.js (previously Ignored)
test/built-ins/Promise/exec-args.js [strict mode] (previously Failed)
test/built-ins/Promise/exec-args.js (previously Failed)
test/built-ins/Promise/executor-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/executor-not-callable.js (previously Failed)
test/built-ins/Promise/resolve-thenable-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-thenable-deferred.js (previously Ignored)
test/built-ins/Promise/reject-function-nonconstructor.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-nonconstructor.js (previously Failed)
test/built-ins/Promise/length.js [strict mode] (previously Failed)
test/built-ins/Promise/length.js (previously Failed)
test/built-ins/Promise/exception-after-resolve-in-executor.js [strict mode] (previously Ignored)
test/built-ins/Promise/exception-after-resolve-in-executor.js (previously Ignored)
test/built-ins/Promise/proto-from-ctor-realm.js [strict mode] (previously Failed)
test/built-ins/Promise/proto-from-ctor-realm.js (previously Failed)
test/built-ins/Promise/get-prototype-abrupt.js [strict mode] (previously Failed)
test/built-ins/Promise/get-prototype-abrupt.js (previously Failed)
test/built-ins/Promise/get-prototype-abrupt-executor-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/get-prototype-abrupt-executor-not-callable.js (previously Failed)
test/built-ins/Promise/reject-via-fn-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-via-fn-deferred.js (previously Ignored)
test/built-ins/Promise/name.js [strict mode] (previously Failed)
test/built-ins/Promise/name.js (previously Failed)
test/built-ins/Promise/reject-function-extensible.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-extensible.js (previously Failed)
test/built-ins/Promise/reject-ignored-via-fn-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-ignored-via-fn-deferred.js (previously Ignored)
test/built-ins/Promise/resolve-ignored-via-fn-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-ignored-via-fn-immed.js (previously Ignored)
test/built-ins/Promise/property-order.js [strict mode] (previously Failed)
test/built-ins/Promise/property-order.js (previously Failed)
test/built-ins/Promise/reject-function-length.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-length.js (previously Failed)
test/built-ins/Promise/executor-call-context-sloppy.js (previously Failed)
test/built-ins/Promise/resolve-function-extensible.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-extensible.js (previously Failed)
test/built-ins/Promise/resolve-function-prototype.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-prototype.js (previously Failed)
test/built-ins/Promise/reject-function-prototype.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-prototype.js (previously Failed)
test/built-ins/Promise/promise.js [strict mode] (previously Failed)
test/built-ins/Promise/promise.js (previously Failed)
test/built-ins/Promise/undefined-newtarget.js [strict mode] (previously Failed)
test/built-ins/Promise/undefined-newtarget.js (previously Failed)
test/built-ins/Promise/constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/constructor.js (previously Failed)
test/built-ins/Promise/is-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/is-a-constructor.js (previously Failed)
test/built-ins/Promise/resolve-thenable-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-thenable-immed.js (previously Ignored)
test/built-ins/Promise/reject-via-fn-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-via-fn-immed.js (previously Ignored)
test/built-ins/Promise/exception-after-resolve-in-thenable-job.js [strict mode] (previously Ignored)
test/built-ins/Promise/exception-after-resolve-in-thenable-job.js (previously Ignored)
test/built-ins/Promise/reject-ignored-via-abrupt.js [strict mode] (previously Ignored)
test/built-ins/Promise/reject-ignored-via-abrupt.js (previously Ignored)
test/built-ins/Promise/reject-function-property-order.js [strict mode] (previously Failed)
test/built-ins/Promise/reject-function-property-order.js (previously Failed)
test/built-ins/Promise/resolve-non-obj-deferred.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-non-obj-deferred.js (previously Ignored)
test/built-ins/Promise/resolve-function-name.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-name.js (previously Failed)
test/built-ins/Promise/executor-call-context-strict.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-length.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve-function-length.js (previously Failed)
test/built-ins/Promise/resolve-poisoned-then-immed.js [strict mode] (previously Ignored)
test/built-ins/Promise/resolve-poisoned-then-immed.js (previously Ignored)
test/built-ins/Promise/any/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/any/ctx-non-object.js (previously Failed)
test/built-ins/Promise/any/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/any/not-a-constructor.js (previously Failed)
test/built-ins/Promise/race/invoke-resolve-get-once-no-calls.js [strict mode] (previously Failed)
test/built-ins/Promise/race/invoke-resolve-get-once-no-calls.js (previously Failed)
test/built-ins/Promise/race/capability-executor-called-twice.js [strict mode] (previously Failed)
test/built-ins/Promise/race/capability-executor-called-twice.js (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A1.1_T1.js (previously Failed)
test/built-ins/Promise/race/species-get-error.js [strict mode] (previously Failed)
test/built-ins/Promise/race/species-get-error.js (previously Failed)
test/built-ins/Promise/race/same-resolve-function.js [strict mode] (previously Failed)
test/built-ins/Promise/race/same-resolve-function.js (previously Failed)
test/built-ins/Promise/race/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/race/ctx-non-object.js (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A3.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A3.1_T1.js (previously Failed)
test/built-ins/Promise/race/invoke-resolve-return.js [strict mode] (previously Failed)
test/built-ins/Promise/race/invoke-resolve-return.js (previously Failed)
test/built-ins/Promise/race/length.js [strict mode] (previously Failed)
test/built-ins/Promise/race/length.js (previously Failed)
test/built-ins/Promise/race/ctx-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/race/ctx-non-ctor.js (previously Failed)
test/built-ins/Promise/race/invoke-resolve.js [strict mode] (previously Failed)
test/built-ins/Promise/race/invoke-resolve.js (previously Failed)
test/built-ins/Promise/race/name.js [strict mode] (previously Failed)
test/built-ins/Promise/race/name.js (previously Failed)
test/built-ins/Promise/race/ctx-ctor-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/race/ctx-ctor-throws.js (previously Failed)
test/built-ins/Promise/race/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/race/prop-desc.js (previously Failed)
test/built-ins/Promise/race/resolve-from-same-thenable.js [strict mode] (previously Failed)
test/built-ins/Promise/race/resolve-from-same-thenable.js (previously Failed)
test/built-ins/Promise/race/capability-executor-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/race/capability-executor-not-callable.js (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A3.1_T2.js [strict mode] (previously Failed)
test/built-ins/Promise/race/S25.4.4.3_A3.1_T2.js (previously Failed)
test/built-ins/Promise/race/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/race/not-a-constructor.js (previously Failed)
test/built-ins/Promise/allSettled/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/allSettled/ctx-non-object.js (previously Failed)
test/built-ins/Promise/allSettled/ctx-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/allSettled/ctx-non-ctor.js (previously Failed)
test/built-ins/Promise/allSettled/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/allSettled/not-a-constructor.js (previously Failed)
test/built-ins/Promise/resolve/context-non-object-with-promise.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/context-non-object-with-promise.js (previously Failed)
test/built-ins/Promise/resolve/resolve-prms-cstm-then.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/resolve-prms-cstm-then.js (previously Failed)
test/built-ins/Promise/resolve/capability-executor-called-twice.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/capability-executor-called-twice.js (previously Failed)
test/built-ins/Promise/resolve/S25.4.4.5_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/S25.4.4.5_A1.1_T1.js (previously Failed)
test/built-ins/Promise/resolve/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/ctx-non-object.js (previously Failed)
test/built-ins/Promise/resolve/resolve-from-promise-capability.js (previously Failed)
test/built-ins/Promise/resolve/S25.4.4.5_A2.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/S25.4.4.5_A2.1_T1.js (previously Failed)
test/built-ins/Promise/resolve/arg-uniq-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/arg-uniq-ctor.js (previously Failed)
test/built-ins/Promise/resolve/capability-invocation-error.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/capability-invocation-error.js (previously Failed)
test/built-ins/Promise/resolve/length.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/length.js (previously Failed)
test/built-ins/Promise/resolve/ctx-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/ctx-non-ctor.js (previously Failed)
test/built-ins/Promise/resolve/name.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/name.js (previously Failed)
test/built-ins/Promise/resolve/ctx-ctor-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/ctx-ctor-throws.js (previously Failed)
test/built-ins/Promise/resolve/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/prop-desc.js (previously Failed)
test/built-ins/Promise/resolve/capability-executor-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/capability-executor-not-callable.js (previously Failed)
test/built-ins/Promise/resolve/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/resolve/not-a-constructor.js (previously Failed)
test/built-ins/Promise/prototype/S25.4.5_A3.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/S25.4.5_A3.1_T1.js (previously Failed)
test/built-ins/Promise/prototype/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/prop-desc.js (previously Failed)
test/built-ins/Promise/prototype/no-promise-state.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/no-promise-state.js (previously Failed)
test/built-ins/Promise/prototype/proto.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/proto.js (previously Failed)
test/built-ins/Promise/prototype/Symbol.toStringTag.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/Symbol.toStringTag.js (previously Failed)
test/built-ins/Promise/prototype/S25.4.4.2_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/S25.4.4.2_A1.1_T1.js (previously Failed)
test/built-ins/Promise/prototype/then/S25.4.5.3_A2.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/S25.4.5.3_A2.1_T1.js (previously Failed)
test/built-ins/Promise/prototype/then/ctor-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/ctor-throws.js (previously Failed)
test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/rxn-handler-fulfilled-next.js (previously Ignored)
test/built-ins/Promise/prototype/then/ctor-access-count.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/ctor-access-count.js (previously Ignored)
test/built-ins/Promise/prototype/then/context-check-on-entry.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/context-check-on-entry.js (previously Failed)
test/built-ins/Promise/prototype/then/prfm-pending-rejected.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/prfm-pending-rejected.js (previously Ignored)
test/built-ins/Promise/prototype/then/name.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/name.js (previously Failed)
test/built-ins/Promise/prototype/then/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/prop-desc.js (previously Failed)
test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/prfm-pending-fulfulled.js (previously Ignored)
test/built-ins/Promise/prototype/then/prfm-rejected.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/prfm-rejected.js (previously Ignored)
test/built-ins/Promise/prototype/then/S25.4.5.3_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/S25.4.5.3_A1.1_T1.js (previously Failed)
test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/rxn-handler-rejected-next.js (previously Ignored)
test/built-ins/Promise/prototype/then/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/not-a-constructor.js (previously Failed)
test/built-ins/Promise/prototype/then/S25.4.5.3_A2.1_T2.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/S25.4.5.3_A2.1_T2.js (previously Failed)
test/built-ins/Promise/prototype/then/prfm-fulfilled.js [strict mode] (previously Ignored)
test/built-ins/Promise/prototype/then/prfm-fulfilled.js (previously Ignored)
test/built-ins/Promise/prototype/then/ctor-null.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/then/ctor-null.js (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-non-object.js (previously Failed)
test/built-ins/Promise/prototype/catch/length.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/length.js (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-obj-coercible.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-obj-coercible.js (previously Failed)
test/built-ins/Promise/prototype/catch/name.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/name.js (previously Failed)
test/built-ins/Promise/prototype/catch/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/prop-desc.js (previously Failed)
test/built-ins/Promise/prototype/catch/S25.4.5.1_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/S25.4.5.1_A1.1_T1.js (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-poisoned.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-poisoned.js (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-throws.js (previously Failed)
test/built-ins/Promise/prototype/catch/invokes-then.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/invokes-then.js (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/this-value-then-not-callable.js (previously Failed)
test/built-ins/Promise/prototype/catch/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/catch/not-a-constructor.js (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-non-object.js (previously Failed)
test/built-ins/Promise/prototype/finally/length.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/length.js (previously Failed)
test/built-ins/Promise/prototype/finally/name.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/name.js (previously Failed)
test/built-ins/Promise/prototype/finally/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/prop-desc.js (previously Failed)
test/built-ins/Promise/prototype/finally/is-a-function.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/is-a-function.js (previously Failed)
test/built-ins/Promise/prototype/finally/invokes-then-with-function.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/invokes-then-with-function.js (previously Failed)
test/built-ins/Promise/prototype/finally/invokes-then-with-non-function.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/invokes-then-with-non-function.js (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-poisoned.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-poisoned.js (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-throws.js (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-then-not-callable.js (previously Failed)
test/built-ins/Promise/prototype/finally/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/not-a-constructor.js (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-thenable.js [strict mode] (previously Failed)
test/built-ins/Promise/prototype/finally/this-value-thenable.js (previously Failed)
test/built-ins/Promise/reject/S25.4.4.4_A1.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/S25.4.4.4_A1.1_T1.js (previously Failed)
test/built-ins/Promise/reject/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/ctx-non-object.js (previously Failed)
test/built-ins/Promise/reject/length.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/length.js (previously Failed)
test/built-ins/Promise/reject/ctx-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/ctx-non-ctor.js (previously Failed)
test/built-ins/Promise/reject/name.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/name.js (previously Failed)
test/built-ins/Promise/reject/ctx-ctor-throws.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/ctx-ctor-throws.js (previously Failed)
test/built-ins/Promise/reject/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/prop-desc.js (previously Failed)
test/built-ins/Promise/reject/capability-executor-not-callable.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/capability-executor-not-callable.js (previously Failed)
test/built-ins/Promise/reject/S25.4.4.4_A3.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/S25.4.4.4_A3.1_T1.js (previously Failed)
test/built-ins/Promise/reject/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/reject/not-a-constructor.js (previously Failed)
test/built-ins/Promise/Symbol.species/symbol-species-name.js [strict mode] (previously Failed)
test/built-ins/Promise/Symbol.species/symbol-species-name.js (previously Failed)
test/built-ins/Promise/Symbol.species/return-value.js [strict mode] (previously Failed)
test/built-ins/Promise/Symbol.species/return-value.js (previously Failed)
test/built-ins/Promise/Symbol.species/length.js [strict mode] (previously Failed)
test/built-ins/Promise/Symbol.species/length.js (previously Failed)
test/built-ins/Promise/Symbol.species/prop-desc.js [strict mode] (previously Failed)
test/built-ins/Promise/Symbol.species/prop-desc.js (previously Failed)
test/built-ins/Promise/Symbol.species/symbol-species.js [strict mode] (previously Failed)
test/built-ins/Promise/Symbol.species/symbol-species.js (previously Failed)
test/built-ins/Promise/all/ctx-non-object.js [strict mode] (previously Failed)
test/built-ins/Promise/all/ctx-non-object.js (previously Failed)
test/built-ins/Promise/all/ctx-non-ctor.js [strict mode] (previously Failed)
test/built-ins/Promise/all/ctx-non-ctor.js (previously Failed)
test/built-ins/Promise/all/S25.4.4.1_A4.1_T1.js [strict mode] (previously Failed)
test/built-ins/Promise/all/S25.4.4.1_A4.1_T1.js (previously Failed)
test/built-ins/Promise/all/not-a-constructor.js [strict mode] (previously Failed)
test/built-ins/Promise/all/not-a-constructor.js (previously Failed)
test/built-ins/Symbol/species/builtin-getter-name.js [strict mode] (previously Failed)
test/built-ins/Symbol/species/builtin-getter-name.js (previously Failed)
test/built-ins/Object/seal/seal-promise.js [strict mode] (previously Failed)
test/built-ins/Object/seal/seal-promise.js (previously Failed)
test/language/expressions/class/subclass-builtins/subclass-Promise.js [strict mode] (previously Failed)
test/language/expressions/class/subclass-builtins/subclass-Promise.js (previously Failed)
test/language/statements/class/subclass-builtins/subclass-Promise.js [strict mode] (previously Failed)
test/language/statements/class/subclass-builtins/subclass-Promise.js (previously Failed)

@codecov
Copy link

codecov bot commented Jun 8, 2022

Codecov Report

Merging #2107 (5222c00) into main (6477f61) will decrease coverage by 0.06%.
The diff coverage is 38.04%.

❗ Current head 5222c00 differs from pull request most recent head bde4444. Consider uploading reports for the commit bde4444 to get more accurate results

@@            Coverage Diff             @@
##             main    #2107      +/-   ##
==========================================
- Coverage   43.57%   43.50%   -0.07%     
==========================================
  Files         217      220       +3     
  Lines       19695    19968     +273     
==========================================
+ Hits         8583     8688     +105     
- Misses      11112    11280     +168     
Impacted Files Coverage Δ
boa_engine/src/builtins/iterable/mod.rs 49.51% <ø> (ø)
boa_engine/src/builtins/mod.rs 10.76% <0.00%> (-0.17%) ⬇️
boa_engine/src/lib.rs 86.66% <ø> (ø)
boa_tester/src/exec/js262.rs 0.00% <ø> (ø)
boa_tester/src/main.rs 0.00% <ø> (ø)
boa_engine/src/object/mod.rs 20.42% <18.18%> (-0.07%) ⬇️
boa_engine/src/value/mod.rs 52.14% <25.00%> (-0.40%) ⬇️
boa_engine/src/builtins/promise/promise_job.rs 33.33% <33.33%> (ø)
boa_engine/src/builtins/promise/mod.rs 38.07% <38.07%> (ø)
boa_engine/src/context/intrinsics.rs 58.08% <50.00%> (+0.19%) ⬆️
... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 6477f61...bde4444. Read the comment docs.

@github-actions
Copy link

github-actions bot commented Jun 8, 2022

Benchmark for fbf1d01

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 725.0±32.59ns 749.7±40.08ns +3.41%
Arithmetic operations (Execution) 698.6±34.77ns 750.8±36.73ns +7.47%
Arithmetic operations (Parser) 7.2±0.45µs 7.3±0.32µs +1.39%
Array access (Compiler) 1939.1±107.62ns 2.0±0.08µs +3.14%
Array access (Execution) 10.0±0.41µs 10.6±0.50µs +6.00%
Array access (Parser) 15.1±0.92µs 16.3±0.83µs +7.95%
Array creation (Compiler) 3.0±0.13µs 3.1±0.15µs +3.33%
Array creation (Execution) 3.1±0.19ms 3.3±0.16ms +6.45%
Array creation (Parser) 17.1±0.87µs 18.8±0.72µs +9.94%
Array pop (Compiler) 5.0±0.27µs 5.3±0.38µs +6.00%
Array pop (Execution) 1313.2±59.05µs 1448.4±80.72µs +10.30%
Array pop (Parser) 180.0±6.67µs 182.6±10.16µs +1.44%
Boolean Object Access (Compiler) 1451.6±86.26ns 1502.2±47.18ns +3.49%
Boolean Object Access (Execution) 5.2±0.23µs 5.6±0.24µs +7.69%
Boolean Object Access (Parser) 18.5±0.84µs 19.8±0.70µs +7.03%
Clean js (Compiler) 5.9±0.26µs 6.4±0.30µs +8.47%
Clean js (Execution) 837.6±36.40µs 891.1±106.78µs +6.39%
Clean js (Parser) 40.4±2.53µs 40.3±1.78µs -0.25%
Create Realm 276.7±9.97ns 288.5±25.12ns +4.26%
Dynamic Object Property Access (Compiler) 2.3±0.12µs 2.4±0.09µs +4.35%
Dynamic Object Property Access (Execution) 6.7±0.32µs 7.0±0.33µs +4.48%
Dynamic Object Property Access (Parser) 13.9±0.84µs 14.7±0.62µs +5.76%
Fibonacci (Compiler) 3.4±0.19µs 3.5±0.10µs +2.94%
Fibonacci (Execution) 1764.7±104.73µs 1831.9±74.39µs +3.81%
Fibonacci (Parser) 22.6±1.90µs 21.8±1.67µs -3.54%
For loop (Compiler) 3.2±0.19µs 3.4±0.17µs +6.25%
For loop (Execution) 19.7±0.87µs 20.7±2.36µs +5.08%
For loop (Parser) 19.5±0.93µs 19.5±5.24µs 0.00%
Mini js (Compiler) 5.4±0.29µs 5.4±0.24µs 0.00%
Mini js (Execution) 779.5±52.40µs 800.2±49.85µs +2.66%
Mini js (Parser) 33.6±1.39µs 36.2±2.45µs +7.74%
Number Object Access (Compiler) 1381.4±80.01ns 1459.4±68.19ns +5.65%
Number Object Access (Execution) 4.2±0.41µs 4.3±0.19µs +2.38%
Number Object Access (Parser) 13.8±0.51µs 15.4±0.46µs +11.59%
Object Creation (Compiler) 1986.9±91.38ns 2.1±0.08µs +5.69%
Object Creation (Execution) 6.2±0.21µs 6.7±0.29µs +8.06%
Object Creation (Parser) 12.8±0.53µs 12.8±0.63µs 0.00%
RegExp (Compiler) 2.2±0.09µs 2.4±0.08µs +9.09%
RegExp (Execution) 14.6±1.32µs 15.3±1.05µs +4.79%
RegExp (Parser) 13.1±0.71µs 14.0±0.56µs +6.87%
RegExp Creation (Compiler) 2.0±0.12µs 2.1±0.10µs +5.00%
RegExp Creation (Execution) 10.9±0.69µs 11.6±0.55µs +6.42%
RegExp Creation (Parser) 10.8±0.54µs 11.8±0.81µs +9.26%
RegExp Literal (Compiler) 2.2±0.11µs 2.4±0.26µs +9.09%
RegExp Literal (Execution) 14.6±0.76µs 15.4±0.80µs +5.48%
RegExp Literal (Parser) 10.5±0.66µs 11.7±0.76µs +11.43%
RegExp Literal Creation (Compiler) 2.1±0.11µs 2.2±0.10µs +4.76%
RegExp Literal Creation (Execution) 11.1±0.71µs 11.5±0.55µs +3.60%
RegExp Literal Creation (Parser) 8.0±0.31µs 8.8±0.52µs +10.00%
Static Object Property Access (Compiler) 2.1±0.15µs 2.2±0.18µs +4.76%
Static Object Property Access (Execution) 6.6±0.27µs 6.7±0.50µs +1.52%
Static Object Property Access (Parser) 13.3±1.61µs 14.4±0.53µs +8.27%
String Object Access (Compiler) 1786.0±88.41ns 1894.3±89.77ns +6.06%
String Object Access (Execution) 8.0±0.45µs 8.5±0.43µs +6.25%
String Object Access (Parser) 17.9±1.16µs 19.8±1.03µs +10.61%
String comparison (Compiler) 2.8±0.13µs 2.9±0.10µs +3.57%
String comparison (Execution) 5.6±0.36µs 6.0±0.21µs +7.14%
String comparison (Parser) 14.0±0.63µs 15.2±0.67µs +8.57%
String concatenation (Compiler) 2.3±0.21µs 2.3±0.06µs 0.00%
String concatenation (Execution) 5.3±0.32µs 5.8±0.40µs +9.43%
String concatenation (Parser) 9.8±0.72µs 10.6±0.60µs +8.16%
String copy (Compiler) 1948.5±117.71ns 2.0±0.08µs +2.64%
String copy (Execution) 5.5±0.52µs 5.3±0.37µs -3.64%
String copy (Parser) 7.5±0.43µs 7.9±0.32µs +5.33%
Symbols (Compiler) 1502.4±95.40ns 1536.0±73.46ns +2.24%
Symbols (Execution) 5.4±0.32µs 5.7±0.74µs +5.56%
Symbols (Parser) 6.1±0.29µs 6.3±0.20µs +3.28%

@github-actions
Copy link

github-actions bot commented Jun 8, 2022

Benchmark for bf6af9e

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 695.8±28.78ns 740.2±48.45ns +6.38%
Arithmetic operations (Execution) 764.5±66.70ns 740.2±40.53ns -3.18%
Arithmetic operations (Parser) 7.1±0.26µs 7.4±0.34µs +4.23%
Array access (Compiler) 1962.0±81.91ns 2.1±0.17µs +7.03%
Array access (Execution) 10.8±1.19µs 10.6±0.69µs -1.85%
Array access (Parser) 16.2±0.64µs 16.7±2.32µs +3.09%
Array creation (Compiler) 3.0±0.16µs 3.1±0.17µs +3.33%
Array creation (Execution) 3.2±0.16ms 3.2±0.12ms 0.00%
Array creation (Parser) 19.7±1.45µs 19.2±1.93µs -2.54%
Array pop (Compiler) 5.2±0.24µs 5.2±0.30µs 0.00%
Array pop (Execution) 1411.8±59.13µs 1416.5±79.17µs +0.33%
Array pop (Parser) 193.1±12.07µs 193.5±10.22µs +0.21%
Boolean Object Access (Compiler) 1539.5±82.31ns 1499.0±266.03ns -2.63%
Boolean Object Access (Execution) 5.6±0.31µs 5.5±0.30µs -1.79%
Boolean Object Access (Parser) 18.8±1.04µs 20.0±1.32µs +6.38%
Clean js (Compiler) 6.3±0.44µs 6.2±0.32µs -1.59%
Clean js (Execution) 894.0±46.45µs 921.4±79.28µs +3.06%
Clean js (Parser) 40.1±2.31µs 42.1±2.70µs +4.99%
Create Realm 284.3±12.93ns 296.4±13.04ns +4.26%
Dynamic Object Property Access (Compiler) 2.5±0.22µs 2.4±0.15µs -4.00%
Dynamic Object Property Access (Execution) 7.0±0.31µs 7.3±0.65µs +4.29%
Dynamic Object Property Access (Parser) 15.4±2.00µs 14.5±0.75µs -5.84%
Fibonacci (Compiler) 3.8±0.26µs 3.6±0.26µs -5.26%
Fibonacci (Execution) 1781.2±69.48µs 1810.6±97.41µs +1.65%
Fibonacci (Parser) 21.6±1.52µs 22.3±1.21µs +3.24%
For loop (Compiler) 3.4±0.23µs 3.4±0.18µs 0.00%
For loop (Execution) 20.0±0.87µs 20.7±1.43µs +3.50%
For loop (Parser) 19.4±1.83µs 19.5±1.66µs +0.52%
Mini js (Compiler) 5.5±0.37µs 5.4±0.31µs -1.82%
Mini js (Execution) 842.6±39.55µs 875.7±92.09µs +3.93%
Mini js (Parser) 35.9±2.35µs 36.9±2.04µs +2.79%
Number Object Access (Compiler) 1482.0±93.92ns 1402.5±119.76ns -5.36%
Number Object Access (Execution) 4.4±0.60µs 4.3±0.41µs -2.27%
Number Object Access (Parser) 15.3±1.08µs 15.3±0.79µs 0.00%
Object Creation (Compiler) 2.1±0.09µs 2.1±0.11µs 0.00%
Object Creation (Execution) 6.7±0.29µs 6.7±0.33µs 0.00%
Object Creation (Parser) 12.8±0.57µs 13.1±0.58µs +2.34%
RegExp (Compiler) 2.4±0.12µs 2.4±0.20µs 0.00%
RegExp (Execution) 16.7±2.41µs 15.8±1.55µs -5.39%
RegExp (Parser) 13.9±1.02µs 14.1±0.58µs +1.44%
RegExp Creation (Compiler) 2.2±0.09µs 2.2±0.10µs 0.00%
RegExp Creation (Execution) 11.8±0.72µs 12.2±0.66µs +3.39%
RegExp Creation (Parser) 11.8±0.64µs 11.8±0.70µs 0.00%
RegExp Literal (Compiler) 2.4±0.22µs 2.4±0.15µs 0.00%
RegExp Literal (Execution) 16.8±1.04µs 15.5±0.91µs -7.74%
RegExp Literal (Parser) 11.0±0.43µs 11.5±0.69µs +4.55%
RegExp Literal Creation (Compiler) 2.2±0.20µs 2.1±0.08µs -4.55%
RegExp Literal Creation (Execution) 11.7±0.69µs 11.9±0.77µs +1.71%
RegExp Literal Creation (Parser) 8.8±0.46µs 8.7±0.47µs -1.14%
Static Object Property Access (Compiler) 2.1±0.13µs 2.1±0.10µs 0.00%
Static Object Property Access (Execution) 6.8±0.35µs 7.0±0.64µs +2.94%
Static Object Property Access (Parser) 13.5±0.66µs 13.6±0.54µs +0.74%
String Object Access (Compiler) 1881.0±101.34ns 1853.8±133.89ns -1.45%
String Object Access (Execution) 8.8±1.07µs 8.1±0.43µs -7.95%
String Object Access (Parser) 18.4±1.12µs 19.3±1.50µs +4.89%
String comparison (Compiler) 3.0±0.20µs 3.0±0.16µs 0.00%
String comparison (Execution) 6.0±0.40µs 6.1±0.49µs +1.67%
String comparison (Parser) 14.9±1.18µs 14.6±0.61µs -2.01%
String concatenation (Compiler) 2.3±0.15µs 2.4±0.14µs +4.35%
String concatenation (Execution) 5.7±0.37µs 5.7±0.29µs 0.00%
String concatenation (Parser) 10.4±1.92µs 10.5±1.48µs +0.96%
String copy (Compiler) 2.0±0.13µs 1919.7±104.16ns -4.01%
String copy (Execution) 5.4±0.29µs 5.4±0.24µs 0.00%
String copy (Parser) 7.6±0.43µs 7.6±0.40µs 0.00%
Symbols (Compiler) 1512.1±104.85ns 1525.1±79.13ns +0.86%
Symbols (Execution) 5.5±0.27µs 5.5±0.25µs 0.00%
Symbols (Parser) 5.8±0.30µs 6.2±0.38µs +6.90%

boa_engine/src/builtins/promise/mod.rs Outdated Show resolved Hide resolved
boa_engine/src/builtins/promise/mod.rs Outdated Show resolved Hide resolved
@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Benchmark for 0fd5ac0

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 466.4±5.12ns 476.5±1.93ns +2.17%
Arithmetic operations (Execution) 665.2±0.27ns 665.7±0.43ns +0.08%
Arithmetic operations (Parser) 5.8±0.01µs 5.8±0.01µs 0.00%
Array access (Compiler) 1443.1±3.92ns 1255.9±13.56ns -12.97%
Array access (Execution) 8.0±0.02µs 7.1±0.08µs -11.25%
Array access (Parser) 13.2±0.02µs 11.3±0.14µs -14.39%
Array creation (Compiler) 2.2±0.02µs 1931.1±20.28ns -12.22%
Array creation (Execution) 2.6±0.00ms 2.5±0.01ms -3.85%
Array creation (Parser) 15.2±0.02µs 14.9±0.02µs -1.97%
Array pop (Compiler) 4.1±0.00µs 4.3±0.01µs +4.88%
Array pop (Execution) 1183.7±5.85µs 986.1±12.64µs -16.69%
Array pop (Parser) 145.7±0.61µs 144.4±0.11µs -0.89%
Boolean Object Access (Compiler) 980.8±14.70ns 1135.9±4.47ns +15.81%
Boolean Object Access (Execution) 3.6±0.06µs 4.2±0.01µs +16.67%
Boolean Object Access (Parser) 14.1±0.15µs 13.2±0.22µs -6.38%
Clean js (Compiler) 4.1±0.04µs 4.6±0.01µs +12.20%
Clean js (Execution) 615.2±9.44µs 694.2±4.42µs +12.84%
Clean js (Parser) 33.2±0.05µs 32.6±0.04µs -1.81%
Create Realm 198.8±2.66ns 229.8±3.15ns +15.59%
Dynamic Object Property Access (Compiler) 1717.3±5.56ns 1490.0±16.18ns -13.24%
Dynamic Object Property Access (Execution) 5.3±0.02µs 5.3±0.02µs 0.00%
Dynamic Object Property Access (Parser) 10.3±0.15µs 11.5±0.02µs +11.65%
Fibonacci (Compiler) 2.3±0.03µs 2.3±0.03µs 0.00%
Fibonacci (Execution) 1284.1±26.89µs 1121.7±14.88µs -12.65%
Fibonacci (Parser) 18.0±0.03µs 17.5±0.12µs -2.78%
For loop (Compiler) 2.1±0.03µs 2.2±0.03µs +4.76%
For loop (Execution) 15.8±0.05µs 14.2±0.21µs -10.13%
For loop (Parser) 15.8±0.02µs 14.0±0.89µs -11.39%
Mini js (Compiler) 3.5±0.02µs 4.1±0.02µs +17.14%
Mini js (Execution) 586.8±7.20µs 577.6±3.94µs -1.57%
Mini js (Parser) 28.9±0.04µs 28.2±0.03µs -2.42%
Number Object Access (Compiler) 934.4±14.13ns 1076.3±1.72ns +15.19%
Number Object Access (Execution) 2.8±0.04µs 3.3±0.01µs +17.86%
Number Object Access (Parser) 12.5±0.03µs 12.1±0.02µs -3.20%
Object Creation (Compiler) 1337.4±16.25ns 1278.7±18.43ns -4.39%
Object Creation (Execution) 4.9±0.02µs 5.0±0.02µs +2.04%
Object Creation (Parser) 10.3±0.01µs 10.1±0.02µs -1.94%
RegExp (Compiler) 1696.9±3.09ns 1474.8±19.51ns -13.09%
RegExp (Execution) 11.9±0.07µs 10.5±0.15µs -11.76%
RegExp (Parser) 9.9±0.13µs 11.3±0.02µs +14.14%
RegExp Creation (Compiler) 1528.2±4.39ns 1513.2±3.59ns -0.98%
RegExp Creation (Execution) 9.1±0.04µs 9.3±0.05µs +2.20%
RegExp Creation (Parser) 9.5±0.02µs 9.3±0.02µs -2.11%
RegExp Literal (Compiler) 1712.7±4.38ns 1703.1±2.81ns -0.56%
RegExp Literal (Execution) 12.0±0.08µs 10.5±0.13µs -12.50%
RegExp Literal (Parser) 8.0±0.07µs 7.9±0.03µs -1.25%
RegExp Literal Creation (Compiler) 1539.3±3.71ns 1546.6±9.17ns +0.47%
RegExp Literal Creation (Execution) 9.1±0.04µs 8.0±0.11µs -12.09%
RegExp Literal Creation (Parser) 7.2±0.01µs 7.0±0.03µs -2.78%
Static Object Property Access (Compiler) 1528.7±2.83ns 1301.5±17.16ns -14.86%
Static Object Property Access (Execution) 5.2±0.01µs 5.2±0.03µs 0.00%
Static Object Property Access (Parser) 11.1±0.01µs 10.8±0.02µs -2.70%
String Object Access (Compiler) 1242.2±17.64ns 1254.4±12.69ns +0.98%
String Object Access (Execution) 5.3±0.06µs 6.1±0.02µs +15.09%
String Object Access (Parser) 14.0±0.03µs 13.3±0.09µs -5.00%
String comparison (Compiler) 2.2±0.01µs 2.2±0.01µs 0.00%
String comparison (Execution) 3.9±0.05µs 4.0±0.03µs +2.56%
String comparison (Parser) 12.3±0.02µs 10.5±0.07µs -14.63%
String concatenation (Compiler) 1700.0±3.93ns 1691.6±3.07ns -0.49%
String concatenation (Execution) 4.3±0.02µs 3.7±0.04µs -13.95%
String concatenation (Parser) 8.6±0.01µs 7.3±0.07µs -15.12%
String copy (Compiler) 1215.6±19.41ns 1388.4±4.16ns +14.22%
String copy (Execution) 3.5±0.04µs 3.5±0.04µs 0.00%
String copy (Parser) 6.5±0.02µs 6.3±0.04µs -3.08%
Symbols (Compiler) 1055.6±1.95ns 1044.3±1.79ns -1.07%
Symbols (Execution) 4.1±0.02µs 3.6±0.05µs -12.20%
Symbols (Parser) 4.3±0.06µs 4.9±0.02µs +13.95%

@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Benchmark for cdda963

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 756.7±56.73ns 773.5±34.27ns +2.22%
Arithmetic operations (Execution) 746.7±49.16ns 761.4±36.31ns +1.97%
Arithmetic operations (Parser) 7.1±0.99µs 7.2±0.40µs +1.41%
Array access (Compiler) 2.1±0.12µs 2.1±0.14µs 0.00%
Array access (Execution) 10.2±0.80µs 10.6±0.77µs +3.92%
Array access (Parser) 15.9±1.24µs 16.2±0.83µs +1.89%
Array creation (Compiler) 3.0±0.18µs 3.2±0.51µs +6.67%
Array creation (Execution) 3.1±0.27ms 3.0±0.17ms -3.23%
Array creation (Parser) 18.3±1.43µs 19.4±1.19µs +6.01%
Array pop (Compiler) 5.2±0.32µs 5.5±0.25µs +5.77%
Array pop (Execution) 1335.1±72.05µs 1398.2±83.43µs +4.73%
Array pop (Parser) 177.2±9.99µs 186.4±6.79µs +5.19%
Boolean Object Access (Compiler) 1562.3±78.49ns 1516.0±105.62ns -2.96%
Boolean Object Access (Execution) 5.3±0.40µs 5.5±0.30µs +3.77%
Boolean Object Access (Parser) 18.5±1.91µs 19.1±0.84µs +3.24%
Clean js (Compiler) 5.9±0.54µs 6.4±0.32µs +8.47%
Clean js (Execution) 828.1±45.99µs 915.7±43.97µs +10.58%
Clean js (Parser) 40.0±2.43µs 40.1±2.15µs +0.25%
Create Realm 292.0±20.18ns 286.3±16.97ns -1.95%
Dynamic Object Property Access (Compiler) 2.4±0.21µs 2.2±0.18µs -8.33%
Dynamic Object Property Access (Execution) 7.6±0.53µs 7.0±0.63µs -7.89%
Dynamic Object Property Access (Parser) 14.9±1.29µs 14.7±0.55µs -1.34%
Fibonacci (Compiler) 3.7±0.25µs 3.7±0.20µs 0.00%
Fibonacci (Execution) 1741.9±96.52µs 1783.7±87.12µs +2.40%
Fibonacci (Parser) 22.7±1.24µs 22.1±1.20µs -2.64%
For loop (Compiler) 3.4±0.19µs 3.3±0.20µs -2.94%
For loop (Execution) 20.0±1.24µs 20.7±1.28µs +3.50%
For loop (Parser) 19.1±1.33µs 18.5±1.09µs -3.14%
Mini js (Compiler) 5.3±0.50µs 5.6±0.29µs +5.66%
Mini js (Execution) 771.0±44.62µs 852.6±42.01µs +10.58%
Mini js (Parser) 34.8±2.27µs 35.1±2.24µs +0.86%
Number Object Access (Compiler) 1333.1±114.96ns 1483.1±87.40ns +11.25%
Number Object Access (Execution) 4.3±0.24µs 4.4±0.36µs +2.33%
Number Object Access (Parser) 14.1±0.95µs 14.9±1.51µs +5.67%
Object Creation (Compiler) 2.0±0.18µs 2.2±0.13µs +10.00%
Object Creation (Execution) 7.2±0.62µs 7.0±0.41µs -2.78%
Object Creation (Parser) 13.1±0.91µs 12.4±0.76µs -5.34%
RegExp (Compiler) 2.5±0.12µs 2.2±0.15µs -12.00%
RegExp (Execution) 14.9±1.23µs 14.9±0.97µs 0.00%
RegExp (Parser) 13.7±1.06µs 13.8±0.66µs +0.73%
RegExp Creation (Compiler) 2.2±0.12µs 1905.9±133.60ns -13.37%
RegExp Creation (Execution) 12.2±2.67µs 11.7±0.90µs -4.10%
RegExp Creation (Parser) 11.0±0.99µs 11.9±0.62µs +8.18%
RegExp Literal (Compiler) 2.4±0.52µs 2.2±0.12µs -8.33%
RegExp Literal (Execution) 15.3±0.91µs 14.8±0.94µs -3.27%
RegExp Literal (Parser) 11.0±0.83µs 12.0±0.67µs +9.09%
RegExp Literal Creation (Compiler) 2.1±0.16µs 1983.3±190.15ns -5.56%
RegExp Literal Creation (Execution) 11.5±0.92µs 11.3±1.00µs -1.74%
RegExp Literal Creation (Parser) 8.7±0.84µs 9.0±0.59µs +3.45%
Static Object Property Access (Compiler) 2.0±0.15µs 2.1±0.11µs +5.00%
Static Object Property Access (Execution) 7.2±0.38µs 7.4±0.41µs +2.78%
Static Object Property Access (Parser) 14.2±0.96µs 13.7±0.68µs -3.52%
String Object Access (Compiler) 1923.9±95.68ns 1937.1±148.55ns +0.69%
String Object Access (Execution) 8.0±0.48µs 8.5±0.64µs +6.25%
String Object Access (Parser) 17.4±1.23µs 18.9±0.81µs +8.62%
String comparison (Compiler) 3.0±0.21µs 3.0±0.17µs 0.00%
String comparison (Execution) 5.6±0.44µs 6.3±0.39µs +12.50%
String comparison (Parser) 15.1±1.16µs 15.0±0.57µs -0.66%
String concatenation (Compiler) 2.4±0.12µs 2.5±0.21µs +4.17%
String concatenation (Execution) 5.5±0.49µs 5.9±0.39µs +7.27%
String concatenation (Parser) 10.2±0.78µs 10.5±0.59µs +2.94%
String copy (Compiler) 1930.1±163.56ns 2.0±0.13µs +3.62%
String copy (Execution) 5.4±0.39µs 5.6±0.35µs +3.70%
String copy (Parser) 7.4±0.52µs 7.8±0.51µs +5.41%
Symbols (Compiler) 1454.9±96.09ns 1527.4±116.92ns +4.98%
Symbols (Execution) 5.4±0.38µs 6.0±0.43µs +11.11%
Symbols (Parser) 6.2±0.36µs 6.1±0.47µs -1.61%

@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Benchmark for 99392d3

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 530.6±1.19ns 544.5±0.81ns +2.62%
Arithmetic operations (Execution) 665.7±0.41ns 649.5±0.49ns -2.43%
Arithmetic operations (Parser) 5.9±0.02µs 5.8±0.01µs -1.69%
Array access (Compiler) 1469.4±14.21ns 1462.8±2.90ns -0.45%
Array access (Execution) 8.0±0.04µs 8.1±0.02µs +1.25%
Array access (Parser) 13.0±0.02µs 13.0±0.01µs 0.00%
Array creation (Compiler) 2.2±0.01µs 2.2±0.00µs 0.00%
Array creation (Execution) 2.6±0.00ms 2.5±0.00ms -3.85%
Array creation (Parser) 15.0±0.02µs 14.7±0.01µs -2.00%
Array pop (Compiler) 4.0±0.01µs 4.4±0.02µs +10.00%
Array pop (Execution) 1186.6±11.83µs 1130.2±2.86µs -4.75%
Array pop (Parser) 145.2±0.12µs 144.7±0.14µs -0.34%
Boolean Object Access (Compiler) 1144.0±1.41ns 1132.9±4.78ns -0.97%
Boolean Object Access (Execution) 4.2±0.00µs 4.2±0.01µs 0.00%
Boolean Object Access (Parser) 15.7±0.02µs 15.7±0.05µs 0.00%
Clean js (Compiler) 4.6±0.02µs 4.8±0.02µs +4.35%
Clean js (Execution) 717.0±3.26µs 695.4±5.12µs -3.01%
Clean js (Parser) 32.5±0.04µs 32.5±0.02µs 0.00%
Create Realm 227.8±0.49ns 229.0±0.15ns +0.53%
Dynamic Object Property Access (Compiler) 1713.0±14.44ns 1761.5±4.40ns +2.83%
Dynamic Object Property Access (Execution) 5.3±0.01µs 5.3±0.02µs 0.00%
Dynamic Object Property Access (Parser) 11.7±0.02µs 11.5±0.01µs -1.71%
Fibonacci (Compiler) 2.7±0.01µs 2.7±0.00µs 0.00%
Fibonacci (Execution) 1286.7±3.56µs 1284.1±6.01µs -0.20%
Fibonacci (Parser) 17.7±0.02µs 17.5±0.01µs -1.13%
For loop (Compiler) 2.5±0.00µs 2.6±0.01µs +4.00%
For loop (Execution) 15.8±0.04µs 16.1±0.03µs +1.90%
For loop (Parser) 15.3±0.02µs 15.2±0.02µs -0.65%
Mini js (Compiler) 4.1±0.02µs 4.2±0.02µs +2.44%
Mini js (Execution) 677.7±4.03µs 656.0±3.09µs -3.20%
Mini js (Parser) 28.4±0.03µs 28.3±0.05µs -0.35%
Number Object Access (Compiler) 1083.4±4.46ns 1073.4±2.11ns -0.92%
Number Object Access (Execution) 3.3±0.03µs 3.3±0.01µs 0.00%
Number Object Access (Parser) 12.2±0.03µs 12.2±0.17µs 0.00%
Object Creation (Compiler) 1536.1±17.56ns 1545.2±6.36ns +0.59%
Object Creation (Execution) 4.9±0.02µs 5.0±0.02µs +2.04%
Object Creation (Parser) 10.2±0.04µs 10.1±0.06µs -0.98%
RegExp (Compiler) 1711.2±9.06ns 1736.8±3.16ns +1.50%
RegExp (Execution) 11.9±0.06µs 12.1±0.06µs +1.68%
RegExp (Parser) 11.2±0.02µs 11.1±0.02µs -0.89%
RegExp Creation (Compiler) 1543.5±6.45ns 1585.7±5.66ns +2.73%
RegExp Creation (Execution) 9.1±0.04µs 9.1±0.04µs 0.00%
RegExp Creation (Parser) 9.3±0.02µs 9.3±0.02µs 0.00%
RegExp Literal (Compiler) 1719.9±5.41ns 1762.8±5.26ns +2.49%
RegExp Literal (Execution) 12.0±0.07µs 12.0±0.07µs 0.00%
RegExp Literal (Parser) 9.1±0.03µs 8.9±0.01µs -2.20%
RegExp Literal Creation (Compiler) 1536.7±3.88ns 1580.4±6.05ns +2.84%
RegExp Literal Creation (Execution) 9.1±0.06µs 9.2±0.04µs +1.10%
RegExp Literal Creation (Parser) 7.2±0.02µs 7.0±0.03µs -2.78%
Static Object Property Access (Compiler) 1553.1±15.20ns 1550.4±5.86ns -0.17%
Static Object Property Access (Execution) 5.1±0.02µs 5.1±0.01µs 0.00%
Static Object Property Access (Parser) 10.9±0.02µs 10.8±0.02µs -0.92%
String Object Access (Compiler) 1412.8±7.60ns 1419.3±2.89ns +0.46%
String Object Access (Execution) 6.1±0.03µs 6.1±0.02µs 0.00%
String Object Access (Parser) 15.5±0.03µs 15.2±0.02µs -1.94%
String comparison (Compiler) 2.2±0.01µs 2.3±0.01µs +4.55%
String comparison (Execution) 4.5±0.01µs 4.5±0.03µs 0.00%
String comparison (Parser) 12.0±0.02µs 11.8±0.03µs -1.67%
String concatenation (Compiler) 1696.5±3.33ns 1773.9±6.16ns +4.56%
String concatenation (Execution) 4.3±0.02µs 4.2±0.02µs -2.33%
String concatenation (Parser) 8.4±0.02µs 8.3±0.03µs -1.19%
String copy (Compiler) 1386.4±4.18ns 1439.1±5.36ns +3.80%
String copy (Execution) 4.0±0.02µs 4.0±0.01µs 0.00%
String copy (Parser) 6.3±0.01µs 6.2±0.02µs -1.59%
Symbols (Compiler) 1064.4±1.84ns 1089.6±3.30ns +2.37%
Symbols (Execution) 4.1±0.02µs 4.1±0.02µs 0.00%
Symbols (Parser) 5.0±0.01µs 4.9±0.03µs -2.00%

@github-actions
Copy link

github-actions bot commented Jun 9, 2022

Benchmark for c3c5b44

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 519.3±1.45ns 521.1±1.40ns +0.35%
Arithmetic operations (Execution) 506.1±0.49ns 507.8±1.03ns +0.34%
Arithmetic operations (Parser) 5.9±0.01µs 6.0±0.06µs +1.69%
Array access (Compiler) 1650.3±31.31ns 1517.9±4.55ns -8.02%
Array access (Execution) 8.5±0.03µs 8.6±0.03µs +1.18%
Array access (Parser) 13.9±0.05µs 13.9±0.03µs 0.00%
Array creation (Compiler) 2.4±0.05µs 2.4±0.01µs 0.00%
Array creation (Execution) 2.4±0.01ms 2.4±0.01ms 0.00%
Array creation (Parser) 16.1±0.06µs 15.9±0.05µs -1.24%
Array pop (Compiler) 4.1±0.01µs 4.1±0.01µs 0.00%
Array pop (Execution) 1138.8±4.21µs 1131.4±3.58µs -0.65%
Array pop (Parser) 152.5±0.18µs 152.8±0.16µs +0.20%
Boolean Object Access (Compiler) 1164.0±6.49ns 1162.6±4.73ns -0.12%
Boolean Object Access (Execution) 4.4±0.01µs 4.6±0.01µs +4.55%
Boolean Object Access (Parser) 16.5±0.08µs 16.7±0.10µs +1.21%
Clean js (Compiler) 5.0±0.02µs 5.0±0.04µs 0.00%
Clean js (Execution) 738.4±3.76µs 738.3±6.07µs -0.01%
Clean js (Parser) 34.4±0.12µs 35.0±0.07µs +1.74%
Create Realm 261.9±0.34ns 232.9±2.60ns -11.07%
Dynamic Object Property Access (Compiler) 1840.8±4.66ns 1846.2±8.06ns +0.29%
Dynamic Object Property Access (Execution) 5.3±0.02µs 5.4±0.03µs +1.89%
Dynamic Object Property Access (Parser) 12.6±0.05µs 12.6±0.25µs 0.00%
Fibonacci (Compiler) 2.8±0.01µs 2.8±0.01µs 0.00%
Fibonacci (Execution) 1368.3±6.97µs 1388.5±9.01µs +1.48%
Fibonacci (Parser) 18.8±0.04µs 18.8±0.04µs 0.00%
For loop (Compiler) 2.7±0.01µs 2.7±0.01µs 0.00%
For loop (Execution) 15.8±0.04µs 16.0±0.02µs +1.27%
For loop (Parser) 16.4±0.03µs 16.4±0.04µs 0.00%
Mini js (Compiler) 4.4±0.01µs 4.4±0.02µs 0.00%
Mini js (Execution) 699.5±11.52µs 691.7±6.77µs -1.12%
Mini js (Parser) 30.2±0.15µs 30.2±0.09µs 0.00%
Number Object Access (Compiler) 1090.3±5.06ns 1102.7±2.89ns +1.14%
Number Object Access (Execution) 3.5±0.04µs 3.6±0.03µs +2.86%
Number Object Access (Parser) 12.9±0.07µs 13.1±0.11µs +1.55%
Object Creation (Compiler) 1711.1±36.57ns 1602.5±8.85ns -6.35%
Object Creation (Execution) 4.9±0.03µs 5.0±0.03µs +2.04%
Object Creation (Parser) 10.9±0.03µs 10.9±0.05µs 0.00%
RegExp (Compiler) 1823.6±7.51ns 1815.9±8.31ns -0.42%
RegExp (Execution) 12.2±0.06µs 12.1±0.06µs -0.82%
RegExp (Parser) 12.2±0.03µs 12.1±0.06µs -0.82%
RegExp Creation (Compiler) 1617.6±5.13ns 1648.7±4.52ns +1.92%
RegExp Creation (Execution) 9.0±0.03µs 9.1±0.05µs +1.11%
RegExp Creation (Parser) 10.1±0.04µs 10.0±0.04µs -0.99%
RegExp Literal (Compiler) 1809.6±8.42ns 1816.3±8.60ns +0.37%
RegExp Literal (Execution) 12.2±0.07µs 12.1±0.09µs -0.82%
RegExp Literal (Parser) 9.8±0.04µs 9.6±0.02µs -2.04%
RegExp Literal Creation (Compiler) 1623.7±4.19ns 1639.3±3.86ns +0.96%
RegExp Literal Creation (Execution) 9.0±0.04µs 9.1±0.04µs +1.11%
RegExp Literal Creation (Parser) 7.7±0.04µs 7.6±0.03µs -1.30%
Static Object Property Access (Compiler) 1747.1±38.05ns 1623.8±9.51ns -7.06%
Static Object Property Access (Execution) 5.2±0.04µs 5.2±0.02µs 0.00%
Static Object Property Access (Parser) 11.7±0.04µs 11.6±0.04µs -0.85%
String Object Access (Compiler) 1480.1±8.03ns 1473.0±3.82ns -0.48%
String Object Access (Execution) 6.4±0.04µs 6.5±0.03µs +1.56%
String Object Access (Parser) 16.4±0.09µs 16.3±0.07µs -0.61%
String comparison (Compiler) 2.4±0.00µs 2.4±0.01µs 0.00%
String comparison (Execution) 4.5±0.01µs 4.6±0.02µs +2.22%
String comparison (Parser) 12.9±0.03µs 12.7±0.04µs -1.55%
String concatenation (Compiler) 1828.2±6.76ns 1803.6±26.70ns -1.35%
String concatenation (Execution) 4.3±0.02µs 4.4±0.03µs +2.33%
String concatenation (Parser) 9.0±0.03µs 8.8±0.04µs -2.22%
String copy (Compiler) 1506.6±1.63ns 1510.0±3.32ns +0.23%
String copy (Execution) 4.0±0.02µs 4.1±0.02µs +2.50%
String copy (Parser) 6.9±0.05µs 6.7±0.03µs -2.90%
Symbols (Compiler) 1106.0±2.77ns 1129.3±4.47ns +2.11%
Symbols (Execution) 4.2±0.03µs 4.3±0.03µs +2.38%
Symbols (Parser) 5.3±0.04µs 5.2±0.01µs -1.89%

@github-actions
Copy link

Benchmark for 7f012fa

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 548.2±0.95ns 542.7±1.05ns -1.00%
Arithmetic operations (Execution) 651.9±0.59ns 695.9±0.85ns +6.75%
Arithmetic operations (Parser) 5.8±0.01µs 5.8±0.02µs 0.00%
Array access (Compiler) 1468.7±4.40ns 1433.3±2.23ns -2.41%
Array access (Execution) 8.0±0.03µs 8.0±0.02µs 0.00%
Array access (Parser) 13.0±0.10µs 13.1±0.01µs +0.77%
Array creation (Compiler) 2.2±0.00µs 2.2±0.01µs 0.00%
Array creation (Execution) 2.6±0.00ms 2.7±0.00ms +3.85%
Array creation (Parser) 15.1±0.15µs 15.0±0.02µs -0.66%
Array pop (Compiler) 4.2±0.01µs 4.1±0.02µs -2.38%
Array pop (Execution) 1163.1±5.93µs 1189.9±2.83µs +2.30%
Array pop (Parser) 143.2±0.30µs 145.7±0.29µs +1.75%
Boolean Object Access (Compiler) 1154.7±4.50ns 1157.5±4.80ns +0.24%
Boolean Object Access (Execution) 4.2±0.01µs 4.3±0.03µs +2.38%
Boolean Object Access (Parser) 15.9±0.01µs 15.5±0.02µs -2.52%
Clean js (Compiler) 4.6±0.01µs 4.6±0.01µs 0.00%
Clean js (Execution) 717.6±3.59µs 718.7±4.11µs +0.15%
Clean js (Parser) 32.6±0.03µs 32.4±0.03µs -0.61%
Create Realm 230.5±0.18ns 228.5±1.93ns -0.87%
Dynamic Object Property Access (Compiler) 1744.4±8.48ns 1708.2±5.41ns -2.08%
Dynamic Object Property Access (Execution) 5.4±0.02µs 5.3±0.01µs -1.85%
Dynamic Object Property Access (Parser) 11.8±0.02µs 11.7±0.02µs -0.85%
Fibonacci (Compiler) 2.7±0.01µs 2.6±0.01µs -3.70%
Fibonacci (Execution) 1303.3±5.68µs 1298.8±2.44µs -0.35%
Fibonacci (Parser) 17.6±0.03µs 17.6±0.03µs 0.00%
For loop (Compiler) 2.5±0.01µs 2.5±0.00µs 0.00%
For loop (Execution) 15.7±0.04µs 15.7±0.03µs 0.00%
For loop (Parser) 15.3±0.14µs 15.4±0.02µs +0.65%
Mini js (Compiler) 4.1±0.02µs 4.1±0.01µs 0.00%
Mini js (Execution) 676.6±3.48µs 677.8±3.42µs +0.18%
Mini js (Parser) 28.5±0.03µs 28.4±0.04µs -0.35%
Number Object Access (Compiler) 1089.5±1.72ns 1078.8±2.83ns -0.98%
Number Object Access (Execution) 3.3±0.02µs 3.3±0.01µs 0.00%
Number Object Access (Parser) 12.3±0.01µs 12.1±0.03µs -1.63%
Object Creation (Compiler) 1538.2±6.88ns 1504.4±2.68ns -2.20%
Object Creation (Execution) 5.0±0.02µs 4.9±0.02µs -2.00%
Object Creation (Parser) 10.3±0.04µs 10.3±0.01µs 0.00%
RegExp (Compiler) 1708.0±5.19ns 1712.0±11.63ns +0.23%
RegExp (Execution) 11.8±0.07µs 11.8±0.13µs 0.00%
RegExp (Parser) 11.2±0.01µs 11.3±0.02µs +0.89%
RegExp Creation (Compiler) 1564.6±7.56ns 1533.5±8.16ns -1.99%
RegExp Creation (Execution) 8.9±0.04µs 9.1±0.04µs +2.25%
RegExp Creation (Parser) 9.3±0.02µs 9.3±0.01µs 0.00%
RegExp Literal (Compiler) 1754.8±3.53ns 1683.2±9.29ns -4.08%
RegExp Literal (Execution) 11.8±0.07µs 11.8±0.08µs 0.00%
RegExp Literal (Parser) 9.0±0.01µs 9.0±0.02µs 0.00%
RegExp Literal Creation (Compiler) 1576.7±6.50ns 1532.1±9.72ns -2.83%
RegExp Literal Creation (Execution) 8.8±0.04µs 9.1±0.03µs +3.41%
RegExp Literal Creation (Parser) 7.1±0.01µs 7.0±0.01µs -1.41%
Static Object Property Access (Compiler) 1565.8±6.44ns 1527.2±10.75ns -2.47%
Static Object Property Access (Execution) 5.2±0.02µs 5.2±0.03µs 0.00%
Static Object Property Access (Parser) 11.0±0.01µs 11.0±0.02µs 0.00%
String Object Access (Compiler) 1432.7±2.69ns 1429.4±2.52ns -0.23%
String Object Access (Execution) 6.2±0.02µs 6.1±0.05µs -1.61%
String Object Access (Parser) 15.5±0.02µs 15.1±0.03µs -2.58%
String comparison (Compiler) 2.2±0.04µs 2.2±0.01µs 0.00%
String comparison (Execution) 4.5±0.01µs 4.5±0.03µs 0.00%
String comparison (Parser) 11.9±0.02µs 12.0±0.02µs +0.84%
String concatenation (Compiler) 1754.5±2.46ns 1706.9±4.40ns -2.71%
String concatenation (Execution) 4.3±0.02µs 4.3±0.02µs 0.00%
String concatenation (Parser) 8.4±0.02µs 8.4±0.02µs 0.00%
String copy (Compiler) 1443.5±5.02ns 1384.7±9.24ns -4.07%
String copy (Execution) 4.1±0.02µs 4.0±0.02µs -2.44%
String copy (Parser) 6.2±0.01µs 6.2±0.01µs 0.00%
Symbols (Compiler) 1076.2±1.90ns 1064.6±1.97ns -1.08%
Symbols (Execution) 4.2±0.01µs 4.1±0.02µs -2.38%
Symbols (Parser) 5.0±0.01µs 4.9±0.02µs -2.00%

@github-actions
Copy link

Benchmark for 62aff30

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 548.5±0.95ns 544.8±0.90ns -0.67%
Arithmetic operations (Execution) 648.5±0.49ns 673.8±0.94ns +3.90%
Arithmetic operations (Parser) 6.0±0.06µs 5.9±0.02µs -1.67%
Array access (Compiler) 1473.6±5.65ns 1436.9±14.87ns -2.49%
Array access (Execution) 8.1±0.02µs 8.1±0.03µs 0.00%
Array access (Parser) 13.2±0.02µs 13.0±0.03µs -1.52%
Array creation (Compiler) 2.3±0.00µs 2.2±0.01µs -4.35%
Array creation (Execution) 2.6±0.00ms 2.7±0.01ms +3.85%
Array creation (Parser) 15.1±0.01µs 15.1±0.04µs 0.00%
Array pop (Compiler) 4.2±0.01µs 4.1±0.01µs -2.38%
Array pop (Execution) 1157.9±5.16µs 1200.0±3.81µs +3.64%
Array pop (Parser) 146.2±0.21µs 145.1±0.33µs -0.75%
Boolean Object Access (Compiler) 1176.0±7.59ns 1155.8±4.68ns -1.72%
Boolean Object Access (Execution) 4.2±0.01µs 4.2±0.01µs 0.00%
Boolean Object Access (Parser) 16.1±0.04µs 15.4±0.03µs -4.35%
Clean js (Compiler) 4.7±0.01µs 4.6±0.01µs -2.13%
Clean js (Execution) 713.7±4.21µs 728.4±3.79µs +2.06%
Clean js (Parser) 33.0±0.04µs 32.6±0.05µs -1.21%
Create Realm 249.4±4.36ns 232.5±3.02ns -6.78%
Dynamic Object Property Access (Compiler) 1794.4±7.56ns 1717.6±4.12ns -4.28%
Dynamic Object Property Access (Execution) 5.4±0.02µs 5.3±0.02µs -1.85%
Dynamic Object Property Access (Parser) 11.9±0.03µs 11.8±0.02µs -0.84%
Fibonacci (Compiler) 2.7±0.01µs 2.6±0.01µs -3.70%
Fibonacci (Execution) 1339.7±12.05µs 1313.4±3.03µs -1.96%
Fibonacci (Parser) 18.0±0.02µs 17.5±0.02µs -2.78%
For loop (Compiler) 2.6±0.01µs 2.5±0.03µs -3.85%
For loop (Execution) 15.9±0.02µs 15.8±0.03µs -0.63%
For loop (Parser) 15.5±0.03µs 15.5±0.05µs 0.00%
Mini js (Compiler) 4.1±0.01µs 4.1±0.01µs 0.00%
Mini js (Execution) 672.0±3.77µs 691.8±4.18µs +2.95%
Mini js (Parser) 28.7±0.03µs 28.3±0.04µs -1.39%
Number Object Access (Compiler) 1097.5±1.76ns 1074.8±1.93ns -2.07%
Number Object Access (Execution) 3.3±0.00µs 3.3±0.01µs 0.00%
Number Object Access (Parser) 12.6±0.02µs 12.0±0.02µs -4.76%
Object Creation (Compiler) 1548.5±6.98ns 1499.8±3.36ns -3.14%
Object Creation (Execution) 5.1±0.02µs 5.0±0.03µs -1.96%
Object Creation (Parser) 10.4±0.01µs 10.3±0.02µs -0.96%
RegExp (Compiler) 1800.4±9.66ns 1688.7±3.28ns -6.20%
RegExp (Execution) 11.8±0.06µs 11.8±0.08µs 0.00%
RegExp (Parser) 11.4±0.03µs 11.2±0.03µs -1.75%
RegExp Creation (Compiler) 1611.3±4.53ns 1513.6±3.04ns -6.06%
RegExp Creation (Execution) 8.9±0.04µs 8.8±0.03µs -1.12%
RegExp Creation (Parser) 9.4±0.02µs 9.3±0.08µs -1.06%
RegExp Literal (Compiler) 1785.8±10.55ns 1694.7±4.05ns -5.10%
RegExp Literal (Execution) 11.8±0.06µs 11.7±0.06µs -0.85%
RegExp Literal (Parser) 9.2±0.02µs 9.0±0.07µs -2.17%
RegExp Literal Creation (Compiler) 1574.5±6.44ns 1540.9±5.73ns -2.13%
RegExp Literal Creation (Execution) 9.0±0.05µs 8.7±0.03µs -3.33%
RegExp Literal Creation (Parser) 7.1±0.01µs 7.0±0.06µs -1.41%
Static Object Property Access (Compiler) 1563.8±6.47ns 1486.2±3.79ns -4.96%
Static Object Property Access (Execution) 5.2±0.03µs 5.2±0.01µs 0.00%
Static Object Property Access (Parser) 11.2±0.03µs 11.0±0.02µs -1.79%
String Object Access (Compiler) 1497.6±2.96ns 1425.0±3.02ns -4.85%
String Object Access (Execution) 6.2±0.03µs 6.1±0.01µs -1.61%
String Object Access (Parser) 15.8±0.02µs 15.2±0.01µs -3.80%
String comparison (Compiler) 2.2±0.01µs 2.2±0.01µs 0.00%
String comparison (Execution) 4.6±0.01µs 4.4±0.01µs -4.35%
String comparison (Parser) 12.1±0.01µs 12.0±0.04µs -0.83%
String concatenation (Compiler) 1762.2±2.37ns 1712.2±8.38ns -2.84%
String concatenation (Execution) 4.4±0.01µs 4.2±0.02µs -4.55%
String concatenation (Parser) 8.4±0.02µs 8.3±0.02µs -1.19%
String copy (Compiler) 1437.0±2.19ns 1391.8±6.46ns -3.15%
String copy (Execution) 4.1±0.01µs 4.0±0.02µs -2.44%
String copy (Parser) 6.4±0.01µs 6.3±0.00µs -1.56%
Symbols (Compiler) 1084.1±4.89ns 1045.7±2.34ns -3.54%
Symbols (Execution) 4.2±0.01µs 4.1±0.02µs -2.38%
Symbols (Parser) 5.0±0.02µs 5.0±0.01µs 0.00%

@github-actions
Copy link

Benchmark for 2bc5167

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 569.1±1.06ns 551.7±0.80ns -3.06%
Arithmetic operations (Execution) 652.1±0.97ns 666.3±0.49ns +2.18%
Arithmetic operations (Parser) 5.8±0.01µs 5.8±0.01µs 0.00%
Array access (Compiler) 1475.1±2.88ns 1469.0±9.43ns -0.41%
Array access (Execution) 8.0±0.04µs 8.1±0.02µs +1.25%
Array access (Parser) 13.0±0.02µs 13.0±0.02µs 0.00%
Array creation (Compiler) 2.2±0.01µs 2.2±0.01µs 0.00%
Array creation (Execution) 2.6±0.01ms 2.7±0.00ms +3.85%
Array creation (Parser) 15.0±0.03µs 15.0±0.08µs 0.00%
Array pop (Compiler) 4.2±0.01µs 4.1±0.01µs -2.38%
Array pop (Execution) 1160.5±8.70µs 1192.5±2.03µs +2.76%
Array pop (Parser) 143.4±0.15µs 145.4±0.29µs +1.39%
Boolean Object Access (Compiler) 1149.9±5.84ns 1151.4±4.91ns +0.13%
Boolean Object Access (Execution) 4.3±0.01µs 4.2±0.01µs -2.33%
Boolean Object Access (Parser) 16.0±0.36µs 15.6±0.06µs -2.50%
Clean js (Compiler) 4.7±0.01µs 4.6±0.01µs -2.13%
Clean js (Execution) 711.1±3.71µs 712.1±3.69µs +0.14%
Clean js (Parser) 32.5±0.23µs 32.3±0.16µs -0.62%
Create Realm 238.6±1.79ns 226.3±0.14ns -5.16%
Dynamic Object Property Access (Compiler) 1762.4±8.88ns 1689.0±3.78ns -4.16%
Dynamic Object Property Access (Execution) 5.4±0.01µs 5.2±0.01µs -3.70%
Dynamic Object Property Access (Parser) 11.7±0.02µs 11.8±0.02µs +0.85%
Fibonacci (Compiler) 2.7±0.01µs 2.6±0.01µs -3.70%
Fibonacci (Execution) 1320.5±39.05µs 1299.7±3.39µs -1.58%
Fibonacci (Parser) 17.6±0.02µs 17.5±0.02µs -0.57%
For loop (Compiler) 2.5±0.01µs 2.5±0.00µs 0.00%
For loop (Execution) 15.8±0.03µs 15.7±0.03µs -0.63%
For loop (Parser) 15.1±0.01µs 15.4±0.02µs +1.99%
Mini js (Compiler) 4.2±0.02µs 4.1±0.01µs -2.38%
Mini js (Execution) 668.6±3.78µs 676.3±3.37µs +1.15%
Mini js (Parser) 28.4±0.04µs 28.3±0.04µs -0.35%
Number Object Access (Compiler) 1095.0±1.62ns 1075.0±2.04ns -1.83%
Number Object Access (Execution) 3.3±0.01µs 3.3±0.01µs 0.00%
Number Object Access (Parser) 12.3±0.02µs 12.1±0.04µs -1.63%
Object Creation (Compiler) 1559.1±9.84ns 1498.7±3.41ns -3.87%
Object Creation (Execution) 5.1±0.02µs 4.9±0.01µs -3.92%
Object Creation (Parser) 10.2±0.01µs 10.3±0.02µs +0.98%
RegExp (Compiler) 1715.6±3.16ns 1738.3±11.96ns +1.32%
RegExp (Execution) 11.8±0.08µs 11.7±0.07µs -0.85%
RegExp (Parser) 11.2±0.02µs 11.2±0.02µs 0.00%
RegExp Creation (Compiler) 1566.4±5.39ns 1569.1±24.80ns +0.17%
RegExp Creation (Execution) 8.9±0.04µs 8.8±0.21µs -1.12%
RegExp Creation (Parser) 9.3±0.01µs 9.3±0.02µs 0.00%
RegExp Literal (Compiler) 1725.1±2.97ns 1751.7±11.13ns +1.54%
RegExp Literal (Execution) 11.7±0.07µs 11.7±0.07µs 0.00%
RegExp Literal (Parser) 8.9±0.01µs 9.0±0.02µs +1.12%
RegExp Literal Creation (Compiler) 1539.6±5.42ns 1566.8±8.53ns +1.77%
RegExp Literal Creation (Execution) 8.9±0.04µs 8.9±0.12µs 0.00%
RegExp Literal Creation (Parser) 7.0±0.01µs 7.1±0.07µs +1.43%
Static Object Property Access (Compiler) 1553.9±5.71ns 1512.8±4.32ns -2.64%
Static Object Property Access (Execution) 5.2±0.01µs 5.1±0.02µs -1.92%
Static Object Property Access (Parser) 10.9±0.02µs 11.0±0.02µs +0.92%
String Object Access (Compiler) 1424.5±3.47ns 1425.1±2.83ns +0.04%
String Object Access (Execution) 6.1±0.02µs 6.0±0.03µs -1.64%
String Object Access (Parser) 15.5±0.02µs 15.2±0.05µs -1.94%
String comparison (Compiler) 2.2±0.01µs 2.2±0.01µs 0.00%
String comparison (Execution) 4.6±0.02µs 4.5±0.03µs -2.17%
String comparison (Parser) 11.8±0.02µs 11.9±0.01µs +0.85%
String concatenation (Compiler) 1731.6±2.89ns 1764.0±6.65ns +1.87%
String concatenation (Execution) 4.3±0.02µs 4.2±0.02µs -2.33%
String concatenation (Parser) 8.2±0.02µs 8.3±0.01µs +1.22%
String copy (Compiler) 1423.9±7.90ns 1400.6±3.69ns -1.64%
String copy (Execution) 4.1±0.02µs 4.0±0.01µs -2.44%
String copy (Parser) 6.2±0.02µs 6.3±0.01µs +1.61%
Symbols (Compiler) 1080.1±2.26ns 1054.3±1.99ns -2.39%
Symbols (Execution) 4.2±0.01µs 4.1±0.01µs -2.38%
Symbols (Parser) 4.9±0.02µs 4.9±0.01µs 0.00%

@github-actions
Copy link

Benchmark for 0af2ea7

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 547.1±1.05ns 564.6±1.15ns +3.20%
Arithmetic operations (Execution) 659.8±0.30ns 678.3±1.27ns +2.80%
Arithmetic operations (Parser) 5.8±0.01µs 5.8±0.01µs 0.00%
Array access (Compiler) 1461.4±3.91ns 1437.8±2.86ns -1.61%
Array access (Execution) 8.1±0.03µs 8.0±0.02µs -1.23%
Array access (Parser) 13.0±0.04µs 13.0±0.07µs 0.00%
Array creation (Compiler) 2.2±0.02µs 2.2±0.01µs 0.00%
Array creation (Execution) 2.6±0.00ms 2.7±0.00ms +3.85%
Array creation (Parser) 15.2±0.02µs 15.0±0.02µs -1.32%
Array pop (Compiler) 4.2±0.01µs 4.1±0.02µs -2.38%
Array pop (Execution) 1163.1±2.42µs 1196.7±5.02µs +2.89%
Array pop (Parser) 143.6±0.18µs 144.9±0.14µs +0.91%
Boolean Object Access (Compiler) 1152.0±2.78ns 1146.3±2.49ns -0.49%
Boolean Object Access (Execution) 4.3±0.01µs 4.3±0.01µs 0.00%
Boolean Object Access (Parser) 15.9±0.04µs 15.4±0.02µs -3.14%
Clean js (Compiler) 4.7±0.01µs 4.6±0.01µs -2.13%
Clean js (Execution) 711.1±2.94µs 718.7±6.22µs +1.07%
Clean js (Parser) 32.6±0.03µs 32.4±0.04µs -0.61%
Create Realm 228.1±2.66ns 232.1±0.11ns +1.75%
Dynamic Object Property Access (Compiler) 1718.9±4.08ns 1720.7±1.96ns +0.10%
Dynamic Object Property Access (Execution) 5.4±0.01µs 5.3±0.02µs -1.85%
Dynamic Object Property Access (Parser) 11.9±0.01µs 11.7±0.02µs -1.68%
Fibonacci (Compiler) 2.7±0.01µs 2.7±0.00µs 0.00%
Fibonacci (Execution) 1323.7±3.89µs 1287.6±1.51µs -2.73%
Fibonacci (Parser) 17.7±0.02µs 17.7±0.02µs 0.00%
For loop (Compiler) 2.5±0.01µs 2.5±0.01µs 0.00%
For loop (Execution) 15.8±0.03µs 15.7±0.03µs -0.63%
For loop (Parser) 15.3±0.04µs 15.4±0.02µs +0.65%
Mini js (Compiler) 4.2±0.02µs 4.1±0.01µs -2.38%
Mini js (Execution) 672.0±3.02µs 680.9±4.27µs +1.32%
Mini js (Parser) 28.8±0.04µs 28.4±0.04µs -1.39%
Number Object Access (Compiler) 1087.9±2.58ns 1080.5±2.93ns -0.68%
Number Object Access (Execution) 3.3±0.00µs 3.3±0.01µs 0.00%
Number Object Access (Parser) 12.3±0.03µs 12.0±0.02µs -2.44%
Object Creation (Compiler) 1529.4±5.15ns 1525.1±6.76ns -0.28%
Object Creation (Execution) 5.2±0.01µs 4.9±0.05µs -5.77%
Object Creation (Parser) 10.5±0.02µs 10.2±0.01µs -2.86%
RegExp (Compiler) 1709.0±2.94ns 1707.3±2.20ns -0.10%
RegExp (Execution) 12.1±0.06µs 11.8±0.06µs -2.48%
RegExp (Parser) 11.2±0.03µs 11.1±0.02µs -0.89%
RegExp Creation (Compiler) 1534.5±4.78ns 1552.5±3.94ns +1.17%
RegExp Creation (Execution) 9.2±0.05µs 8.8±0.03µs -4.35%
RegExp Creation (Parser) 9.3±0.01µs 9.2±0.01µs -1.08%
RegExp Literal (Compiler) 1723.9±2.39ns 1720.7±17.15ns -0.19%
RegExp Literal (Execution) 12.1±0.08µs 11.8±0.06µs -2.48%
RegExp Literal (Parser) 9.0±0.01µs 8.9±0.02µs -1.11%
RegExp Literal Creation (Compiler) 1574.1±5.95ns 1546.2±6.91ns -1.77%
RegExp Literal Creation (Execution) 9.3±0.06µs 8.8±0.04µs -5.38%
RegExp Literal Creation (Parser) 7.1±0.01µs 7.0±0.01µs -1.41%
Static Object Property Access (Compiler) 1550.3±6.02ns 1556.1±6.52ns +0.37%
Static Object Property Access (Execution) 5.3±0.03µs 5.1±0.01µs -3.77%
Static Object Property Access (Parser) 11.2±0.01µs 10.9±0.02µs -2.68%
String Object Access (Compiler) 1419.2±4.22ns 1423.7±3.78ns +0.32%
String Object Access (Execution) 6.2±0.02µs 6.0±0.04µs -3.23%
String Object Access (Parser) 15.6±0.02µs 15.2±0.04µs -2.56%
String comparison (Compiler) 2.2±0.01µs 2.3±0.01µs +4.55%
String comparison (Execution) 4.6±0.01µs 4.5±0.03µs -2.17%
String comparison (Parser) 12.0±0.01µs 12.0±0.05µs 0.00%
String concatenation (Compiler) 1736.9±3.47ns 1726.8±4.28ns -0.58%
String concatenation (Execution) 4.4±0.02µs 4.2±0.05µs -4.55%
String concatenation (Parser) 8.3±0.01µs 8.3±0.02µs 0.00%
String copy (Compiler) 1433.5±3.59ns 1420.3±9.20ns -0.92%
String copy (Execution) 4.1±0.02µs 4.0±0.03µs -2.44%
String copy (Parser) 6.3±0.02µs 6.3±0.01µs 0.00%
Symbols (Compiler) 1078.2±4.47ns 1060.7±2.32ns -1.62%
Symbols (Execution) 4.2±0.01µs 4.1±0.01µs -2.38%
Symbols (Parser) 4.9±0.01µs 4.9±0.01µs 0.00%

@github-actions
Copy link

Benchmark for c6d5958

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 640.2±24.34ns 624.2±17.53ns -2.50%
Arithmetic operations (Execution) 650.9±27.23ns 659.1±29.14ns +1.26%
Arithmetic operations (Parser) 6.2±0.29µs 6.4±0.38µs +3.23%
Array access (Compiler) 1787.4±66.66ns 1774.6±73.34ns -0.72%
Array access (Execution) 9.3±0.45µs 9.1±0.39µs -2.15%
Array access (Parser) 14.5±0.69µs 14.0±0.56µs -3.45%
Array creation (Compiler) 2.7±0.12µs 2.7±0.09µs 0.00%
Array creation (Execution) 2.8±0.09ms 2.8±0.16ms 0.00%
Array creation (Parser) 16.1±0.78µs 16.9±1.16µs +4.97%
Array pop (Compiler) 4.7±0.26µs 4.6±0.18µs -2.13%
Array pop (Execution) 1240.0±46.79µs 1259.6±59.59µs +1.58%
Array pop (Parser) 166.1±7.52µs 167.7±9.12µs +0.96%
Boolean Object Access (Compiler) 1387.1±82.78ns 1302.3±58.01ns -6.11%
Boolean Object Access (Execution) 5.2±0.22µs 4.9±0.13µs -5.77%
Boolean Object Access (Parser) 17.4±1.10µs 16.4±0.43µs -5.75%
Clean js (Compiler) 5.6±0.48µs 5.6±0.38µs 0.00%
Clean js (Execution) 776.9±22.72µs 792.6±35.37µs +2.02%
Clean js (Parser) 36.3±3.66µs 34.8±1.08µs -4.13%
Create Realm 255.5±8.27ns 248.4±7.79ns -2.78%
Dynamic Object Property Access (Compiler) 2.1±0.10µs 2.1±0.05µs 0.00%
Dynamic Object Property Access (Execution) 6.2±0.20µs 6.2±0.25µs 0.00%
Dynamic Object Property Access (Parser) 12.9±0.67µs 13.3±0.68µs +3.10%
Fibonacci (Compiler) 3.2±0.11µs 3.2±0.14µs 0.00%
Fibonacci (Execution) 1575.3±90.40µs 1565.3±57.96µs -0.63%
Fibonacci (Parser) 19.7±1.33µs 19.3±0.93µs -2.03%
For loop (Compiler) 3.0±0.09µs 3.0±0.10µs 0.00%
For loop (Execution) 17.8±0.59µs 18.1±1.10µs +1.69%
For loop (Parser) 16.8±0.95µs 17.9±1.43µs +6.55%
Mini js (Compiler) 5.0±0.22µs 4.7±0.19µs -6.00%
Mini js (Execution) 737.4±77.74µs 715.6±33.42µs -2.96%
Mini js (Parser) 32.2±3.30µs 32.0±1.73µs -0.62%
Number Object Access (Compiler) 1333.2±45.53ns 1240.0±41.95ns -6.99%
Number Object Access (Execution) 3.7±0.16µs 4.1±0.14µs +10.81%
Number Object Access (Parser) 13.9±0.73µs 13.1±0.64µs -5.76%
Object Creation (Compiler) 1792.0±62.11ns 1854.6±49.12ns +3.49%
Object Creation (Execution) 6.0±0.62µs 5.9±0.17µs -1.67%
Object Creation (Parser) 11.1±0.47µs 10.9±0.41µs -1.80%
RegExp (Compiler) 2.1±0.07µs 2.1±0.09µs 0.00%
RegExp (Execution) 13.7±0.58µs 13.7±0.81µs 0.00%
RegExp (Parser) 12.1±0.44µs 11.9±0.32µs -1.65%
RegExp Creation (Compiler) 1842.5±58.44ns 2.0±0.07µs +8.55%
RegExp Creation (Execution) 10.2±0.49µs 10.2±0.58µs 0.00%
RegExp Creation (Parser) 10.3±0.34µs 10.0±0.38µs -2.91%
RegExp Literal (Compiler) 2.1±0.12µs 2.1±0.07µs 0.00%
RegExp Literal (Execution) 13.8±0.57µs 13.7±0.45µs -0.72%
RegExp Literal (Parser) 9.9±0.39µs 9.7±1.03µs -2.02%
RegExp Literal Creation (Compiler) 1873.5±61.86ns 1884.5±82.33ns +0.59%
RegExp Literal Creation (Execution) 10.4±0.54µs 10.1±0.57µs -2.88%
RegExp Literal Creation (Parser) 8.4±0.35µs 7.5±0.24µs -10.71%
Static Object Property Access (Compiler) 1901.6±86.78ns 1888.9±60.22ns -0.67%
Static Object Property Access (Execution) 6.0±0.20µs 6.1±0.24µs +1.67%
Static Object Property Access (Parser) 12.0±0.58µs 11.7±0.40µs -2.50%
String Object Access (Compiler) 1658.5±91.32ns 1614.3±63.97ns -2.67%
String Object Access (Execution) 7.4±0.54µs 7.3±0.45µs -1.35%
String Object Access (Parser) 16.8±0.76µs 16.6±1.11µs -1.19%
String comparison (Compiler) 2.7±0.16µs 2.7±0.14µs 0.00%
String comparison (Execution) 5.2±0.18µs 5.2±0.22µs 0.00%
String comparison (Parser) 14.0±0.64µs 13.3±0.63µs -5.00%
String concatenation (Compiler) 2.2±0.14µs 2.1±0.09µs -4.55%
String concatenation (Execution) 5.2±0.35µs 5.1±0.23µs -1.92%
String concatenation (Parser) 9.0±0.48µs 9.0±0.30µs 0.00%
String copy (Compiler) 1741.2±75.24ns 1788.4±97.73ns +2.71%
String copy (Execution) 4.7±0.19µs 4.7±0.16µs 0.00%
String copy (Parser) 6.8±0.28µs 6.8±0.28µs 0.00%
Symbols (Compiler) 1421.4±54.82ns 1323.7±32.06ns -6.87%
Symbols (Execution) 4.9±0.23µs 4.9±0.21µs 0.00%
Symbols (Parser) 5.3±0.24µs 5.3±0.22µs 0.00%

@github-actions
Copy link

Benchmark for aee020a

Click to view benchmark
Test Base PR %
Arithmetic operations (Compiler) 628.3±26.36ns 634.0±28.82ns +0.91%
Arithmetic operations (Execution) 711.2±33.78ns 781.5±41.11ns +9.88%
Arithmetic operations (Parser) 6.2±0.21µs 6.2±0.50µs 0.00%
Array access (Compiler) 1650.4±70.59ns 1737.2±53.85ns +5.26%
Array access (Execution) 9.4±0.56µs 9.4±0.37µs 0.00%
Array access (Parser) 14.1±0.52µs 13.5±0.63µs -4.26%
Array creation (Compiler) 2.7±0.13µs 2.6±0.18µs -3.70%
Array creation (Execution) 3.0±0.16ms 3.1±0.12ms +3.33%
Array creation (Parser) 15.8±0.55µs 16.4±0.71µs +3.80%
Array pop (Compiler) 5.0±0.21µs 4.7±0.29µs -6.00%
Array pop (Execution) 1321.1±69.27µs 1389.6±84.01µs +5.19%
Array pop (Parser) 160.7±7.16µs 161.2±7.86µs +0.31%
Boolean Object Access (Compiler) 1231.9±27.57ns 1182.6±53.92ns -4.00%
Boolean Object Access (Execution) 4.8±0.31µs 4.7±0.29µs -2.08%
Boolean Object Access (Parser) 18.0±0.60µs 16.1±1.45µs -10.56%
Clean js (Compiler) 5.2±0.22µs 5.3±0.30µs +1.92%
Clean js (Execution) 774.0±45.01µs 830.6±32.43µs +7.31%
Clean js (Parser) 35.9±2.25µs 32.4±1.44µs -9.75%
Create Realm 267.8±11.23ns 257.7±17.48ns -3.77%
Dynamic Object Property Access (Compiler) 1927.5±110.73ns 1829.1±82.82ns -5.11%
Dynamic Object Property Access (Execution) 6.1±0.37µs 6.0±0.32µs -1.64%
Dynamic Object Property Access (Parser) 12.8±1.07µs 11.5±0.59µs -10.16%
Fibonacci (Compiler) 3.0±0.14µs 2.9±0.15µs -3.33%
Fibonacci (Execution) 1493.9±65.44µs 1527.3±52.28µs +2.24%
Fibonacci (Parser) 18.9±0.83µs 18.5±0.92µs -2.12%
For loop (Compiler) 2.9±0.29µs 2.7±0.13µs -6.90%
For loop (Execution) 18.9±0.82µs 17.6±0.65µs -6.88%
For loop (Parser) 16.7±0.66µs 16.5±0.81µs -1.20%
Mini js (Compiler) 4.6±0.19µs 4.6±0.22µs 0.00%
Mini js (Execution) 753.4±59.35µs 771.9±29.08µs +2.46%
Mini js (Parser) 29.7±1.23µs 28.2±1.69µs -5.05%
Number Object Access (Compiler) 1193.9±47.30ns 1138.4±42.53ns -4.65%
Number Object Access (Execution) 3.6±0.20µs 3.6±0.17µs 0.00%
Number Object Access (Parser) 13.8±0.35µs 12.4±0.65µs -10.14%
Object Creation (Compiler) 1784.9±60.31ns 1712.4±74.36ns -4.06%
Object Creation (Execution) 5.9±0.20µs 5.7±0.18µs -3.39%
Object Creation (Parser) 11.5±0.75µs 10.5±0.67µs -8.70%
RegExp (Compiler) 1982.9±90.04ns 2.0±0.09µs +0.86%
RegExp (Execution) 14.3±1.06µs 14.3±0.82µs 0.00%
RegExp (Parser) 12.7±0.51µs 11.5±0.49µs -9.45%
RegExp Creation (Compiler) 1730.3±84.95ns 1844.7±59.89ns +6.61%
RegExp Creation (Execution) 10.9±0.66µs 10.5±0.45µs -3.67%
RegExp Creation (Parser) 10.0±0.42µs 9.7±0.63µs -3.00%
RegExp Literal (Compiler) 2.0±0.09µs 1987.4±76.28ns -0.63%
RegExp Literal (Execution) 13.6±0.77µs 13.7±0.55µs +0.74%
RegExp Literal (Parser) 9.4±0.43µs 9.6±0.31µs +2.13%
RegExp Literal Creation (Compiler) 1752.3±86.71ns 1666.6±129.77ns -4.89%
RegExp Literal Creation (Execution) 11.0±0.76µs 10.6±0.38µs -3.64%
RegExp Literal Creation (Parser) 7.3±0.33µs 7.1±0.40µs -2.74%
Static Object Property Access (Compiler) 1752.2±67.73ns 1772.0±107.43ns +1.13%
Static Object Property Access (Execution) 5.9±0.40µs 5.7±0.26µs -3.39%
Static Object Property Access (Parser) 12.1±0.39µs 11.2±0.56µs -7.44%
String Object Access (Compiler) 1501.7±62.57ns 1500.9±75.42ns -0.05%
String Object Access (Execution) 6.7±0.33µs 7.3±0.82µs +8.96%
String Object Access (Parser) 17.5±0.65µs 15.7±0.99µs -10.29%
String comparison (Compiler) 2.7±0.14µs 2.6±0.16µs -3.70%
String comparison (Execution) 5.4±0.19µs 5.1±0.21µs -5.56%
String comparison (Parser) 12.9±0.94µs 12.0±0.71µs -6.98%
String concatenation (Compiler) 1975.4±90.91ns 2.0±0.09µs +1.25%
String concatenation (Execution) 4.9±0.26µs 5.0±0.18µs +2.04%
String concatenation (Parser) 9.0±0.56µs 9.0±0.87µs 0.00%
String copy (Compiler) 1634.0±83.47ns 1692.6±61.30ns +3.59%
String copy (Execution) 4.6±0.61µs 4.5±0.21µs -2.17%
String copy (Parser) 6.9±0.23µs 6.1±0.30µs -11.59%
Symbols (Compiler) 1252.9±51.27ns 1230.9±84.08ns -1.76%
Symbols (Execution) 4.8±0.21µs 4.6±0.20µs -4.17%
Symbols (Parser) 5.2±0.32µs 4.9±0.28µs -5.77%

@Razican
Copy link
Member Author

Razican commented Jun 14, 2022

Feel free to check this up and merge it. I will create separate PRs for async/await execution and the [[Done]] field in iterables, based on this one.

Copy link
Member

@raskad raskad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I got some inital comments. I will probably take a detailed look later today.

boa_engine/src/job.rs Outdated Show resolved Hide resolved
boa_engine/src/job.rs Show resolved Hide resolved
boa_engine/src/job.rs Outdated Show resolved Hide resolved
Copy link
Member

@raskad raskad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there are some more optimizations with some types, but let's go ahead and merge it and address those in follow ups. From here we got a really nice starting point into everything async.

@raskad
Copy link
Member

raskad commented Jun 15, 2022

bors r+

bors bot pushed a commit that referenced this pull request Jun 15, 2022
This PR overrides #1923. It also removes the `queues` dependency added there, and rebases it to the latest `main` branch state.

It adds the following:

- A job queue (in `Context`)
- The constructor [`Promise`](https://tc39.es/ecma262/#sec-promise-executor)
- [`Promise.race`](https://tc39.es/ecma262/#sec-promise.race)
- [`Promise.reject`](https://tc39.es/ecma262/#sec-promise.reject)
- [`Promise.resolve`](https://tc39.es/ecma262/#sec-promise.resolve)
- [`get Promise [ @@species ]`](https://tc39.es/ecma262/#sec-get-promise-@@species)
- [`Promise.prototype [ @@toStringTag ]`](https://tc39.es/ecma262/#sec-promise.prototype-@@tostringtag)
- [`Promise.prototype.then`](https://tc39.es/ecma262/#sec-promise.prototype.then)
- [`Promise.prototype.finally`](https://tc39.es/ecma262/#sec-promise.prototype.finally)
- [`Promise.prototype.catch`](https://tc39.es/ecma262/#sec-promise.prototype.catch)
- The additional needed infrastructure
  - [`PerformPromiseThen ( promise, onFulfilled, onRejected [ , resultCapability ] )`](https://tc39.es/ecma262/#sec-performpromisethen)
  - [`TriggerPromiseReactions ( reactions, argument )`](https://tc39.es/ecma262/#sec-triggerpromisereactions)
  - [`PerformPromiseRace ( iteratorRecord, constructor, resultCapability, promiseResolve )`](https://tc39.es/ecma262/#sec-performpromiserace)
  - [`RejectPromise ( promise, reason )`](https://tc39.es/ecma262/#sec-rejectpromise)
  - [`FulfillPromise ( promise, value )`](https://tc39.es/ecma262/#sec-fulfillpromise)
  - [`IfAbruptRejectPromise ( value, capability )`](https://tc39.es/ecma262/#sec-ifabruptrejectpromise)
  - [`CreateResolvingFunctions ( promise )`](https://tc39.es/ecma262/#sec-createresolvingfunctions)
  - [`NewPromiseCapability ( C )`](https://tc39.es/ecma262/#sec-newpromisecapability)
  - [`NewPromiseReactionJob ( reaction, argument )`](https://tc39.es/ecma262/#sec-newpromisereactionjob)
  - [`NewPromiseResolveThenableJob ( promiseToResolve, thenable, then )`](https://tc39.es/ecma262/#sec-newpromiseresolvethenablejob)
  - [`PromiseResolve ( C, x )`](https://tc39.es/ecma262/#sec-promise-resolve)
- A test case showcasing the run-to-completion semantics.

An example program that shows the control flow with this addition is:
```javascript
new Promise((res, rej) => {
  console.log("A");
  res(undefined);
}).then((_) => console.log("B"));
console.log("C");
```
Which would output:
```
A
C
B
```
@bors
Copy link

bors bot commented Jun 15, 2022

Pull request successfully merged into main.

Build succeeded:

@bors bors bot changed the title Execution stack & promises [Merged by Bors] - Execution stack & promises Jun 15, 2022
@bors bors bot closed this Jun 15, 2022
@bors bors bot deleted the execution_stack branch June 15, 2022 01:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
builtins PRs and Issues related to builtins/intrinsics enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants