Exemple #1
0
        public void Ref_CanReturn_DynamicValue()
        {
            var dummyGameObject = new GameObject();
            var refInstance     = new RefAlias();

            refInstance.useConstant = false;
            refInstance.var         = dummyGameObject;

            var returnedValue = refInstance.Value;

            Assert.AreEqual(dummyGameObject, returnedValue);
        }
Exemple #2
0
        public void Execute()
        {
            var disassembler = new Backend.Transformations.Disassembler(host, methodDefinition, sourceLocationProvider);
            var methodBody   = disassembler.Execute();

            MethodBody = methodBody;

            var cfAnalysis = new ControlFlowAnalysis(methodBody);

            ControlFlowGraph = cfAnalysis.GenerateExceptionalControlFlow();

            var splitter = new WebAnalysis(ControlFlowGraph, methodBody.MethodDefinition);

            splitter.Analyze();
            splitter.Transform();

            methodBody.UpdateVariables();

            var typeAnalysis = new TypeInferenceAnalysis(ControlFlowGraph, methodBody.MethodDefinition.Type);

            typeAnalysis.Analyze();

            //var forwardCopyAnalysis = new ForwardCopyPropagationAnalysis(Traverser.CFG);
            //forwardCopyAnalysis.Analyze();
            //forwardCopyAnalysis.Transform(methodBody);

            //var backwardCopyAnalysis = new BackwardCopyPropagationAnalysis(Traverser.CFG);
            //backwardCopyAnalysis.Analyze();
            //backwardCopyAnalysis.Transform(methodBody);

            // TinyBCT transformations

            var fieldInitialization = new FieldInitialization(methodBody);

            fieldInitialization.Transform();

            if (!Settings.AddressesEnabled())
            {
                var refAlias = new RefAlias(methodBody);
                refAlias.Transform();
            }

            // execute this after RefAlias!
            var immutableArguments = new ImmutableArguments(methodBody);

            immutableArguments.Transform();

            methodBody.RemoveUnusedLabels();
        }
Exemple #3
0
        public void Ref_CanReturn_ConstantValue()
        {
            var dummyGameObject = new GameObject();
            var varInstance     = ScriptableObject.CreateInstance <VarAlias>();

            varInstance.value = dummyGameObject;
            var refInstance = new RefAlias();

            refInstance.useConstant   = true;
            refInstance.constantValue = varInstance;

            var returnedValue = refInstance.Value;

            Assert.AreEqual(dummyGameObject, returnedValue);
        }