Bug 1643455 - Transpile Load(Double|BigInt)Result. r=iain
authorTom Schuster <evilpies@gmail.com>
Thu, 04 Jun 2020 20:35:31 +0000
changeset 534013 2a0ed83e52835753708ca174173b0778bbdb90ac
parent 534012 a55f2483d39e08c497441691a4e3ac12608d3f83
child 534014 34928e9b270f630186de0c7393e234fdf9af5421
push id37481
push userncsoregi@mozilla.com
push dateFri, 05 Jun 2020 04:39:26 +0000
treeherdermozilla-central@fecffba489bd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersiain
bugs1643455
milestone79.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1643455 - Transpile Load(Double|BigInt)Result. r=iain Differential Revision: https://phabricator.services.mozilla.com/D78359
js/src/jit/CacheIROps.yaml
js/src/jit/WarpCacheIRTranspiler.cpp
--- a/js/src/jit/CacheIROps.yaml
+++ b/js/src/jit/CacheIROps.yaml
@@ -1065,23 +1065,23 @@
 - name: LoadInt32Result
   shared: true
   transpile: true
   args:
     val: Int32Id
 
 - name: LoadDoubleResult
   shared: true
-  transpile: false
+  transpile: true
   args:
     val: NumberId
 
 - name: LoadBigIntResult
   shared: true
-  transpile: false
+  transpile: true
   args:
     val: BigIntId
 
 - name: CallScriptedGetterResult
   shared: false
   transpile: false
   args:
     obj: ObjId
--- a/js/src/jit/WarpCacheIRTranspiler.cpp
+++ b/js/src/jit/WarpCacheIRTranspiler.cpp
@@ -426,16 +426,30 @@ bool WarpCacheIRTranspiler::emitGuardToI
 
 bool WarpCacheIRTranspiler::emitLoadInt32Result(Int32OperandId valId) {
   MDefinition* val = getOperand(valId);
   MOZ_ASSERT(val->type() == MIRType::Int32);
   pushResult(val);
   return true;
 }
 
+bool WarpCacheIRTranspiler::emitLoadDoubleResult(NumberOperandId valId) {
+  MDefinition* val = getOperand(valId);
+  MOZ_ASSERT(val->type() == MIRType::Double);
+  pushResult(val);
+  return true;
+}
+
+bool WarpCacheIRTranspiler::emitLoadBigIntResult(BigIntOperandId valId) {
+  MDefinition* val = getOperand(valId);
+  MOZ_ASSERT(val->type() == MIRType::BigInt);
+  pushResult(val);
+  return true;
+}
+
 bool WarpCacheIRTranspiler::emitLoadObjectResult(ObjOperandId objId) {
   MDefinition* obj = getOperand(objId);
   MOZ_ASSERT(obj->type() == MIRType::Object);
   pushResult(obj);
   return true;
 }
 
 bool WarpCacheIRTranspiler::emitLoadStringResult(StringOperandId strId) {