Open Bug 1938149 Opened 11 months ago Updated 4 months ago

Implement optimized import path for Function.prototype.call.bind(DataView.prototype.get)

Categories

(Core :: JavaScript: WebAssembly, enhancement, P3)

enhancement

Tracking

()

People

(Reporter: rhunt, Unassigned)

References

(Blocks 2 open bugs)

Details

V8 has code to recognize the following import pattern:

      _159: Function.prototype.call.bind(DataView.prototype.getUint8),
      _160: Function.prototype.call.bind(DataView.prototype.setUint8),
      _167: Function.prototype.call.bind(DataView.prototype.getUint32),
      _168: Function.prototype.call.bind(DataView.prototype.setUint32),
      _177: Function.prototype.call.bind(DataView.prototype.getFloat64),
      _178: Function.prototype.call.bind(DataView.prototype.setFloat64),

And emit optimized code for typed array access. We may want to see if we can do the same somehow.

Dart would like to use this for fast access to typed arrays.

Blocks: 1971612

This shows up in JetStream3 and would improve our score on the dart subtest by around 4%. It's not just the DataView builtins, it's also things like:

Number.prototype.toString
BigInt.prototype.toString
String.prototype.toLowerCase
String.prototype.indexOf
Summary: Implement optimized import path for Function.prototype.call.bind(DataView.prototype.get) → Implement optimized import path for Function.prototype.call.bind(function)

I'm going to first start optimizing Function.prototype.call.bind in bug 1882955. This bug can be for further optimizations when the targetFunction is a recognized builtin like DataView.

Summary: Implement optimized import path for Function.prototype.call.bind(function) → Implement optimized import path for Function.prototype.call.bind(DataView.prototype.get)
You need to log in before you can comment on or make changes to this bug.