diff options
author | Andy Ayers <andya@microsoft.com> | 2016-03-31 16:29:09 -0700 |
---|---|---|
committer | Andy Ayers <andya@microsoft.com> | 2016-04-07 13:32:40 -0700 |
commit | 95e8431a6d0d89600811dc9f59a39f5673a9df08 (patch) | |
tree | 332b6b7ef6f8a1fe5326fda902da6f1da44f8824 /src/jit/inlinepolicy.h | |
parent | 0bfb2de57c36e5e816f311f132f5d4bcf1ec5ca8 (diff) | |
download | coreclr-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.h | 32 |
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; }; |