summaryrefslogtreecommitdiff
path: root/src/jit/inlinepolicy.h
diff options
context:
space:
mode:
authorAndy Ayers <andya@microsoft.com>2016-03-31 16:29:09 -0700
committerAndy Ayers <andya@microsoft.com>2016-04-07 13:32:40 -0700
commit95e8431a6d0d89600811dc9f59a39f5673a9df08 (patch)
tree332b6b7ef6f8a1fe5326fda902da6f1da44f8824 /src/jit/inlinepolicy.h
parent0bfb2de57c36e5e816f311f132f5d4bcf1ec5ca8 (diff)
downloadcoreclr-95e8431a6d0d89600811dc9f59a39f5673a9df08.tar.gz
coreclr-95e8431a6d0d89600811dc9f59a39f5673a9df08.tar.bz2
coreclr-95e8431a6d0d89600811dc9f59a39f5673a9df08.zip
Inliner: update DiscretionaryPolicy to look at opcodes and arg info
Have the `DiscretionaryPolicy` do some simple opcode histogramming to try and provide better observations for code size estimation. Likewise, look at the types and sizes of arguments and report those.
Diffstat (limited to 'src/jit/inlinepolicy.h')
-rw-r--r--src/jit/inlinepolicy.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/jit/inlinepolicy.h b/src/jit/inlinepolicy.h
index 0d192a15ee..b6c35b2d6b 100644
--- a/src/jit/inlinepolicy.h
+++ b/src/jit/inlinepolicy.h
@@ -216,13 +216,45 @@ public:
const char* GetName() const override { return "DiscretionaryPolicy"; }
private:
+
+ void ComputeOpcodeBin(OPCODE opcode);
+ enum { MAX_ARGS = 4 };
unsigned m_Depth;
unsigned m_BlockCount;
unsigned m_Maxstack;
unsigned m_ArgCount;
+ CorInfoType m_ArgType[MAX_ARGS];
+ size_t m_ArgSize[MAX_ARGS];
unsigned m_LocalCount;
CorInfoType m_ReturnType;
+ size_t m_ReturnSize;
+ unsigned m_ArgAccessCount;
+ unsigned m_LocalAccessCount;
+ unsigned m_IntConstantCount;
+ unsigned m_FloatConstantCount;
+ unsigned m_IntLoadCount;
+ unsigned m_FloatLoadCount;
+ unsigned m_IntStoreCount;
+ unsigned m_FloatStoreCount;
+ unsigned m_SimpleMathCount;
+ unsigned m_ComplexMathCount;
+ unsigned m_OverflowMathCount;
+ unsigned m_IntArrayLoadCount;
+ unsigned m_FloatArrayLoadCount;
+ unsigned m_RefArrayLoadCount;
+ unsigned m_StructArrayLoadCount;
+ unsigned m_IntArrayStoreCount;
+ unsigned m_FloatArrayStoreCount;
+ unsigned m_RefArrayStoreCount;
+ unsigned m_StructArrayStoreCount;
+ unsigned m_StructOperationCount;
+ unsigned m_ObjectModelCount;
+ unsigned m_FieldLoadCount;
+ unsigned m_FieldStoreCount;
+ unsigned m_StaticFieldLoadCount;
+ unsigned m_StaticFieldStoreCount;
+ unsigned m_LoadAddressCount;
unsigned m_ThrowCount;
unsigned m_CallCount;
};