For Math.pow and JSOp::Pow we could do something like this: * (double, int32) => call powi (like Ion) * (double, double) => call ecmaPow (like Ion) For (int32, int32), we could write a C++ function that does exactly the same thing as `MacroAssembler::pow32`. Then we can call that in CacheIR.cpp and if it succeeds we go with `MacroAssembler::pow32`, else we go with the (double, int32) path. Does that make sense to you?
Bug 1640587 Comment 1 Edit History
Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.
For Math.pow and JSOp::Pow we could do something like this: * (double, int32) => call powi (like Ion) * (int32 or double, double) => call ecmaPow (like Ion) For (int32, int32), we could write a C++ function that does exactly the same thing as `MacroAssembler::pow32`. Then we can call that in CacheIR.cpp and if it succeeds we go with `MacroAssembler::pow32`, else we go with the (double, int32) path. Does that make sense to you?