summaryrefslogtreecommitdiff
path: root/src/jit/smcommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/jit/smcommon.cpp')
-rw-r--r--src/jit/smcommon.cpp225
1 files changed, 106 insertions, 119 deletions
diff --git a/src/jit/smcommon.cpp b/src/jit/smcommon.cpp
index da5f271fc9..d17e21b874 100644
--- a/src/jit/smcommon.cpp
+++ b/src/jit/smcommon.cpp
@@ -2,178 +2,165 @@
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
-
#if defined(DEBUG) || defined(SMGEN_COMPILE)
-
-//
+
+//
// The array of state-machine-opcode names
//
-const char * const smOpcodeNames[] =
-{
- #define SMOPDEF(smname,string) string,
- #include "smopcode.def"
- #undef SMOPDEF
+const char* const smOpcodeNames[] = {
+#define SMOPDEF(smname, string) string,
+#include "smopcode.def"
+#undef SMOPDEF
};
//
// The code sequences the state machine will look for.
//
-const SM_OPCODE s_CodeSeqs[][MAX_CODE_SEQUENCE_LENGTH] =
-{
+const SM_OPCODE s_CodeSeqs[][MAX_CODE_SEQUENCE_LENGTH] = {
-#define SMOPDEF(smname,string) {smname, CODE_SEQUENCE_END},
-// ==== Single opcode states ====
+#define SMOPDEF(smname, string) {smname, CODE_SEQUENCE_END},
+// ==== Single opcode states ====
#include "smopcode.def"
-#undef SMOPDEF
-
+#undef SMOPDEF
+
// ==== Legel prefixed opcode sequences ====
- {SM_CONSTRAINED, SM_CALLVIRT, CODE_SEQUENCE_END},
-
+ {SM_CONSTRAINED, SM_CALLVIRT, CODE_SEQUENCE_END},
+
// ==== Interesting patterns ====
// Fetching of object field
- {SM_LDARG_0, SM_LDFLD, CODE_SEQUENCE_END},
- {SM_LDARG_1, SM_LDFLD, CODE_SEQUENCE_END},
- {SM_LDARG_2, SM_LDFLD, CODE_SEQUENCE_END},
- {SM_LDARG_3, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDARG_0, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDARG_1, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDARG_2, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDARG_3, SM_LDFLD, CODE_SEQUENCE_END},
// Fetching of struct field
- {SM_LDARGA_S, SM_LDFLD, CODE_SEQUENCE_END},
- {SM_LDLOCA_S, SM_LDFLD, CODE_SEQUENCE_END},
-
+ {SM_LDARGA_S, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDLOCA_S, SM_LDFLD, CODE_SEQUENCE_END},
+
// Fetching of struct field from a normed struct
- {SM_LDARGA_S_NORMED, SM_LDFLD, CODE_SEQUENCE_END},
- {SM_LDLOCA_S_NORMED, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDARGA_S_NORMED, SM_LDFLD, CODE_SEQUENCE_END},
+ {SM_LDLOCA_S_NORMED, SM_LDFLD, CODE_SEQUENCE_END},
// stloc/ldloc --> dup
- {SM_STLOC_0, SM_LDLOC_0, CODE_SEQUENCE_END},
- {SM_STLOC_1, SM_LDLOC_1, CODE_SEQUENCE_END},
- {SM_STLOC_2, SM_LDLOC_2, CODE_SEQUENCE_END},
- {SM_STLOC_3, SM_LDLOC_3, CODE_SEQUENCE_END},
+ {SM_STLOC_0, SM_LDLOC_0, CODE_SEQUENCE_END},
+ {SM_STLOC_1, SM_LDLOC_1, CODE_SEQUENCE_END},
+ {SM_STLOC_2, SM_LDLOC_2, CODE_SEQUENCE_END},
+ {SM_STLOC_3, SM_LDLOC_3, CODE_SEQUENCE_END},
// FPU operations
- {SM_LDC_R4, SM_ADD, CODE_SEQUENCE_END},
- {SM_LDC_R4, SM_SUB, CODE_SEQUENCE_END},
- {SM_LDC_R4, SM_MUL, CODE_SEQUENCE_END},
- {SM_LDC_R4, SM_DIV, CODE_SEQUENCE_END},
+ {SM_LDC_R4, SM_ADD, CODE_SEQUENCE_END},
+ {SM_LDC_R4, SM_SUB, CODE_SEQUENCE_END},
+ {SM_LDC_R4, SM_MUL, CODE_SEQUENCE_END},
+ {SM_LDC_R4, SM_DIV, CODE_SEQUENCE_END},
- {SM_LDC_R8, SM_ADD, CODE_SEQUENCE_END},
- {SM_LDC_R8, SM_SUB, CODE_SEQUENCE_END},
- {SM_LDC_R8, SM_MUL, CODE_SEQUENCE_END},
- {SM_LDC_R8, SM_DIV, CODE_SEQUENCE_END},
+ {SM_LDC_R8, SM_ADD, CODE_SEQUENCE_END},
+ {SM_LDC_R8, SM_SUB, CODE_SEQUENCE_END},
+ {SM_LDC_R8, SM_MUL, CODE_SEQUENCE_END},
+ {SM_LDC_R8, SM_DIV, CODE_SEQUENCE_END},
- {SM_CONV_R4, SM_ADD, CODE_SEQUENCE_END},
- {SM_CONV_R4, SM_SUB, CODE_SEQUENCE_END},
- {SM_CONV_R4, SM_MUL, CODE_SEQUENCE_END},
- {SM_CONV_R4, SM_DIV, CODE_SEQUENCE_END},
+ {SM_CONV_R4, SM_ADD, CODE_SEQUENCE_END},
+ {SM_CONV_R4, SM_SUB, CODE_SEQUENCE_END},
+ {SM_CONV_R4, SM_MUL, CODE_SEQUENCE_END},
+ {SM_CONV_R4, SM_DIV, CODE_SEQUENCE_END},
// {SM_CONV_R8, SM_ADD, CODE_SEQUENCE_END}, // Removed since it collides with ldelem.r8 in
- // Math.InternalRound
+ // Math.InternalRound
// {SM_CONV_R8, SM_SUB, CODE_SEQUENCE_END}, // Just remove the SM_SUB as well.
- {SM_CONV_R8, SM_MUL, CODE_SEQUENCE_END},
- {SM_CONV_R8, SM_DIV, CODE_SEQUENCE_END},
-
+ {SM_CONV_R8, SM_MUL, CODE_SEQUENCE_END},
+ {SM_CONV_R8, SM_DIV, CODE_SEQUENCE_END},
-/* Constant init constructor:
- L_0006: ldarg.0
- L_0007: ldc.r8 0
- L_0010: stfld float64 raytracer.Vec::x
-*/
+ /* Constant init constructor:
+ L_0006: ldarg.0
+ L_0007: ldc.r8 0
+ L_0010: stfld float64 raytracer.Vec::x
+ */
{SM_LDARG_0, SM_LDC_I4_0, SM_STFLD, CODE_SEQUENCE_END},
- {SM_LDARG_0, SM_LDC_R4, SM_STFLD, CODE_SEQUENCE_END},
- {SM_LDARG_0, SM_LDC_R8, SM_STFLD, CODE_SEQUENCE_END},
-
-/* Copy constructor:
- L_0006: ldarg.0
- L_0007: ldarg.1
- L_0008: ldfld float64 raytracer.Vec::x
- L_000d: stfld float64 raytracer.Vec::x
-*/
+ {SM_LDARG_0, SM_LDC_R4, SM_STFLD, CODE_SEQUENCE_END},
+ {SM_LDARG_0, SM_LDC_R8, SM_STFLD, CODE_SEQUENCE_END},
+
+ /* Copy constructor:
+ L_0006: ldarg.0
+ L_0007: ldarg.1
+ L_0008: ldfld float64 raytracer.Vec::x
+ L_000d: stfld float64 raytracer.Vec::x
+ */
{SM_LDARG_0, SM_LDARG_1, SM_LDFLD, SM_STFLD, CODE_SEQUENCE_END},
-/* Field setter:
+ /* Field setter:
+
+ [DebuggerNonUserCode]
+ private void CtorClosed(object target, IntPtr methodPtr)
+ {
+ if (target == null)
+ {
+ this.ThrowNullThisInDelegateToInstance();
+ }
+ base._target = target;
+ base._methodPtr = methodPtr;
+ }
+
- [DebuggerNonUserCode]
- private void CtorClosed(object target, IntPtr methodPtr)
- {
- if (target == null)
+ .method private hidebysig instance void CtorClosed(object target, native int methodPtr) cil managed
{
- this.ThrowNullThisInDelegateToInstance();
+ .custom instance void System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor()
+ .maxstack 8
+ L_0000: ldarg.1
+ L_0001: brtrue.s L_0009
+ L_0003: ldarg.0
+ L_0004: call instance void System.MulticastDelegate::ThrowNullThisInDelegateToInstance()
+
+ L_0009: ldarg.0
+ L_000a: ldarg.1
+ L_000b: stfld object System.Delegate::_target
+
+ L_0010: ldarg.0
+ L_0011: ldarg.2
+ L_0012: stfld native int System.Delegate::_methodPtr
+
+ L_0017: ret
}
- base._target = target;
- base._methodPtr = methodPtr;
- }
-
-
- .method private hidebysig instance void CtorClosed(object target, native int methodPtr) cil managed
- {
- .custom instance void System.Diagnostics.DebuggerNonUserCodeAttribute::.ctor()
- .maxstack 8
- L_0000: ldarg.1
- L_0001: brtrue.s L_0009
- L_0003: ldarg.0
- L_0004: call instance void System.MulticastDelegate::ThrowNullThisInDelegateToInstance()
-
- L_0009: ldarg.0
- L_000a: ldarg.1
- L_000b: stfld object System.Delegate::_target
-
- L_0010: ldarg.0
- L_0011: ldarg.2
- L_0012: stfld native int System.Delegate::_methodPtr
-
- L_0017: ret
- }
-*/
+ */
{SM_LDARG_0, SM_LDARG_1, SM_STFLD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_LDARG_2, SM_STFLD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_LDARG_3, SM_STFLD, CODE_SEQUENCE_END},
-
-
-/* Scale operator:
-
- L_0000: ldarg.0
- L_0001: dup
- L_0002: ldfld float64 raytracer.Vec::x
- L_0007: ldarg.1
- L_0008: mul
- L_0009: stfld float64 raytracer.Vec::x
-*/
+
+ /* Scale operator:
+
+ L_0000: ldarg.0
+ L_0001: dup
+ L_0002: ldfld float64 raytracer.Vec::x
+ L_0007: ldarg.1
+ L_0008: mul
+ L_0009: stfld float64 raytracer.Vec::x
+ */
{SM_LDARG_0, SM_DUP, SM_LDFLD, SM_LDARG_1, SM_ADD, SM_STFLD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_DUP, SM_LDFLD, SM_LDARG_1, SM_SUB, SM_STFLD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_DUP, SM_LDFLD, SM_LDARG_1, SM_MUL, SM_STFLD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_DUP, SM_LDFLD, SM_LDARG_1, SM_DIV, SM_STFLD, CODE_SEQUENCE_END},
-/* Add operator
- L_0000: ldarg.0
- L_0001: ldfld float64 raytracer.Vec::x
- L_0006: ldarg.1
- L_0007: ldfld float64 raytracer.Vec::x
- L_000c: add
-*/
+ /* Add operator
+ L_0000: ldarg.0
+ L_0001: ldfld float64 raytracer.Vec::x
+ L_0006: ldarg.1
+ L_0007: ldfld float64 raytracer.Vec::x
+ L_000c: add
+ */
{SM_LDARG_0, SM_LDFLD, SM_LDARG_1, SM_LDFLD, SM_ADD, CODE_SEQUENCE_END},
{SM_LDARG_0, SM_LDFLD, SM_LDARG_1, SM_LDFLD, SM_SUB, CODE_SEQUENCE_END},
// No need for mul and div since there is no mathemetical meaning of it.
-
+
{SM_LDARGA_S, SM_LDFLD, SM_LDARGA_S, SM_LDFLD, SM_ADD, CODE_SEQUENCE_END},
{SM_LDARGA_S, SM_LDFLD, SM_LDARGA_S, SM_LDFLD, SM_SUB, CODE_SEQUENCE_END},
// No need for mul and div since there is no mathemetical meaning of it.
// The end:
- {CODE_SEQUENCE_END}
-};
-
-#endif // defined(DEBUG) || defined(SMGEN_COMPILE)
-
-
-
-
-
-
+ {CODE_SEQUENCE_END}};
+#endif // defined(DEBUG) || defined(SMGEN_COMPILE)