Merge pull request #4381 from BrzVlad/feature-generational-hash
[mono.git] / mono / tests / verifier / make_obj_store_test.sh
index 9b7e1d85507c612b80079620e9b42e3278976867..6390c65695cdd7145260c10e6adae930871ced95 100755 (executable)
@@ -1,17 +1,30 @@
 #! /bin/sh
 
+SED="sed"
+if [ `which gsed 2> /dev/null` ] ; then 
+       SED="gsed"
+fi
+
 TEST_NAME=$1
 TEST_VALIDITY=$2
 TEST_OP=$3
 TEST_TYPE1=$4
 TEST_TYPE2=$5
+TEST_CREATE_FIELD=$6
 
 TEST_NAME=${TEST_VALIDITY}_${TEST_NAME}
 TEST_FILE=${TEST_NAME}_generated.il
 echo $TEST_FILE
-TEST_TYPE1=`echo $TEST_TYPE1 | sed -s 's/&/\\\&/'`
-TEST_TYPE2=`echo $TEST_TYPE2 | sed -s 's/&/\\\&/'`
-sed -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
+TEST_TYPE1=`echo $TEST_TYPE1 | $SED -s 's/&/\\\&/'`
+TEST_TYPE2=`echo $TEST_TYPE2 | $SED -s 's/&/\\\&/'`
+
+if [ "$TEST_CREATE_FIELD" = "no" ]; then
+       CLASS_FIELDS="";
+else
+       CLASS_FIELDS=".field public ${TEST_TYPE1} fld\n .field public static ${TEST_TYPE1} sfld";
+fi
+
+$SED -e "s/VALIDITY/${TEST_VALIDITY}/g" -e "s/CLASS_FIELDS/${CLASS_FIELDS}/g" -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/${TEST_TYPE1}/g" -e "s/TYPE2/${TEST_TYPE2}/g" > $TEST_FILE <<//EOF
 
 .assembly '${TEST_NAME}_generated'
 {
@@ -51,11 +64,19 @@ sed -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/$
 
 .class Class extends [mscorlib]System.Object
 {
-    .field public TYPE1 fld
+       CLASS_FIELDS
+
+       .method public hidebysig specialname rtspecialname instance default void .ctor () cil managed
+       {
+               .maxstack 8
+               ldarg.0 
+               call instance void object::.ctor()
+               ret
+       }
 
     .method public void Method(TYPE1) cil managed
     {
-       nop
+       ret
     }
 }
 
@@ -67,10 +88,10 @@ sed -e "s/VALIDITY/${TEST_VALIDITY}/g"  -e "s/OPCODE/${TEST_OP}/g" -e "s/TYPE1/$
                class Class V_0,
                TYPE2 V_1
        )
-       ldloc.0
+       newobj instance void class Class::.ctor()
        ldloc.1
        OPCODE // VALIDITY, TYPE2 cannot be stored in TYPE1.
        ldc.i4.0
        ret
 }
-//EOF
\ No newline at end of file
+//EOF