Skip to content

Optimization: add prototype poly inline cache #244

@ErosZy

Description

@ErosZy

Hi all,

It's openwebf team here. We noticed quickjs-ng/quickjs merge Self Poly Inline Cache from openwebf/quickjs(#116). Previously, there was a memory leak in the Prototype Poly Inline Cache of openwebf/quickjs. However, we fixed this issue yesterday. Currently, both test262 and openwebf's unit and integration tests haven't encountered any related problems.

Based on the benchmark results, significant improvements have been observed in property access operations for heavy objects. The results are as follows:

  • Apple M1 Pro
  • macOS Monterey 12.2.1
  • Clang 13.0.0 arm64-apple-darwin21.3.0
openwebf/quickjs (feat/without-mimalloc-octane) quickjs-ng/quickjs (e995085) Improvement (%)
Richards 1324 1250 +5.92
DeltaBlue 1281 1139 +12.46
Crypto 1314 1310 +0.30
RayTrace 1648 1152 +43.05
EarleyBoyer 2225 2151 +3.44
RegExp 296 258 +14.72
Splay 2467 2169 +13.73
SplayLatency 9089 8197 +10.88
NavierStokes 2576 2407 +7.02
PdfJS 4208 4099 +2.65
Mandreel 1173 1087 +7.91
MandreelLatency 7485 7396 +1.20
Gameboy 9874 9380 +5.26
CodeLoad 14869 16578 -10.30
Box2D 5184 5063 +2.38
Typescript 17665 17736 -0.45
Score (version 9) 3091 2889 +6.99

But we are short-staffed (busy with work 😄), and I noticed there are quite many changes in quickjs-ng/quickjs. Submitting a pull request (PR) might take much time for us. If needed, feel free to merge this feature on your own, or wait a bit until we have time to submit the PR ourselves.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions