summaryrefslogtreecommitdiff
path: root/src/zap/zapinfo.h
diff options
context:
space:
mode:
authorAndy Ayers <andya@microsoft.com>2017-10-23 17:46:41 -0700
committerAndy Ayers <andya@microsoft.com>2017-10-30 14:36:24 -0700
commit215ee89756e612bcdd7e9bd61ea500eacaf4973f (patch)
tree1ba04645996fd4c04db80c1975a1fbd3ef791568 /src/zap/zapinfo.h
parent274c961fa23d3dcd38cbb5736dcbf7b908d0cf99 (diff)
downloadcoreclr-215ee89756e612bcdd7e9bd61ea500eacaf4973f.tar.gz
coreclr-215ee89756e612bcdd7e9bd61ea500eacaf4973f.tar.bz2
coreclr-215ee89756e612bcdd7e9bd61ea500eacaf4973f.zip
JIT: optimize calls on boxed objects
For calls with boxed this objects, invoke the unboxed entry point if available and modify the box to copy the original value or struct to a local. Pass the address of this local as the first argument to the unboxed entry point. Defer for cases where the unboxed entry point requires an extra type parameter. This may enable subsequent inlining of the method, and if the method has other boxed parameters, may enable undoing those boxes as well. The jit is not yet as proficient at eliminating the struct copies, but they are present with or without this change, and some may even be required when the methods mutate the fields of `this`. Closes #14213.
Diffstat (limited to 'src/zap/zapinfo.h')
-rw-r--r--src/zap/zapinfo.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/zap/zapinfo.h b/src/zap/zapinfo.h
index f401cbaf9d..1c73d4a0f5 100644
--- a/src/zap/zapinfo.h
+++ b/src/zap/zapinfo.h
@@ -675,12 +675,14 @@ public:
CORINFO_METHOD_HANDLE resolveVirtualMethod(
CORINFO_METHOD_HANDLE virtualMethod,
CORINFO_CLASS_HANDLE implementingClass,
- CORINFO_CONTEXT_HANDLE ownerType
- );
+ CORINFO_CONTEXT_HANDLE ownerType);
+
+ CORINFO_METHOD_HANDLE getUnboxedEntry(
+ CORINFO_METHOD_HANDLE ftn,
+ bool* requiresInstMethodTableArg);
CORINFO_CLASS_HANDLE getDefaultEqualityComparerClass(
- CORINFO_CLASS_HANDLE elemType
- );
+ CORINFO_CLASS_HANDLE elemType);
void expandRawHandleIntrinsic(
CORINFO_RESOLVED_TOKEN * pResolvedToken,