Use default calling convention small type widening rules for R2R
authorJan Kotas <jkotas@microsoft.com>
Mon, 22 Feb 2016 17:38:34 +0000 (09:38 -0800)
committerJan Kotas <jkotas@microsoft.com>
Mon, 22 Feb 2016 17:38:34 +0000 (09:38 -0800)
Sticking to default calling convention is key for interoperability that is the primary goal of R2R.

Commit migrated from https://github.com/dotnet/coreclr/commit/7f61feafae3cdc9e560629e0bf2a03e64936a7b5

src/coreclr/src/jit/compiler.h
src/coreclr/src/jit/importer.cpp

index f1127b7..1fc7c67 100644 (file)
@@ -7741,9 +7741,8 @@ public :
         inline bool         IsJit64Compat()
         {
 #if defined(_TARGET_AMD64_) && !defined(FEATURE_CORECLR)
-            // JIT64 interop not required for ReadyToRun since it can simply fall-back
-            return !IsReadyToRun();
-#else // defined(_TARGET_AMD64_) && !defined(FEATURE_CORECLR)
+            return true;
+#else
             return false;
 #endif
         }
index 1a40e6e..cfec214 100644 (file)
@@ -5616,7 +5616,9 @@ var_types           Compiler::impImportCall (OPCODE         opcode,
     // the time being that the callee might be compiled by the other JIT and thus the return
     // value will need to be widened by us (or not widened at all...)
 
-    bool            checkForSmallType = opts.IsJit64Compat();
+    // ReadyToRun code sticks with default calling convention that does not widen small return types.
+
+    bool            checkForSmallType = opts.IsJit64Compat() || opts.IsReadyToRun();
     bool            bIntrinsicImported = false;
 
     CORINFO_SIG_INFO calliSig;