private void EndEmitPopLocal(LocalAddress address)
            {
                string localName = mLambdaNode.locals[address.index];

                if (mHeapEnvFieldBuilders.ContainsKey(localName))
                {
                    mILGenerator.Emit(OpCodes.Stfld, mHeapEnvFieldBuilders[localName]);
                }
                else if (address.index < mLambdaNode.formalCount)
                {
                    JITInterpreter_DS.EmitStoreArg(mILGenerator, HasThisArgument(), mArgBuilders[address.index]);
                }
                else
                {
                    JITInterpreter_DS.EmitStoreLocal(mILGenerator, mLocalBuilders[address.index - mLambdaNode.formalCount]);
                }
            }
            private void BeginEmitPopLocal(LocalAddress address)
            {
                string localName = mLambdaNode.locals[address.index];

                if (mHeapEnvFieldBuilders.ContainsKey(localName))
                {
                    JITInterpreter_DS.EmitLoadLocal(mILGenerator, mHeapEnvBuilder);
                }
                else if (address.index < mLambdaNode.formalCount)
                {
                    //
                }
                else
                {
                    //
                }
            }
            private void EndEmitPopLocal(LocalAddress address)
            {
                var builder = mLocalBuilders[address.index];

                if (builder is ParameterBuilder)
                {
                    JITInterpreter_DS2.EmitStoreArg(mILGenerator, HasThisArgument(), builder as ParameterBuilder);
                }
                else
                {
                    LocalBuilder localBuilder = builder as LocalBuilder;
                    if (localBuilder.LocalType == typeof(object))
                    {
                        JITInterpreter_DS2.EmitStoreLocal(mILGenerator, localBuilder);
                    }
                    else
                    {
                        mILGenerator.Emit(OpCodes.Stfld, typeof(SharedValue).GetField("value"));
                    }
                }
            }
            private void BeginEmitPopLocal(LocalAddress address)
            {
                var builder = mLocalBuilders[address.index];

                if (builder is ParameterBuilder)
                {
                    //
                }
                else
                {
                    LocalBuilder localBuilder = builder as LocalBuilder;
                    if (localBuilder.LocalType == typeof(object))
                    {
                        //
                    }
                    else
                    {
                        JITInterpreter_DS2.EmitLoadLocal(mILGenerator, localBuilder);
                    }
                }
            }
Пример #5
0
 private void EndEmitPopLocal(LocalAddress address)
 {
     var builder = mLocalBuilders[address.index];
     if (builder is ParameterBuilder) {
         JITInterpreter_DS2.EmitStoreArg(mILGenerator, HasThisArgument(), builder as ParameterBuilder);
     } else {
         LocalBuilder localBuilder = builder as LocalBuilder;
         if (localBuilder.LocalType == typeof(object)) {
             JITInterpreter_DS2.EmitStoreLocal(mILGenerator, localBuilder);
         } else {
             mILGenerator.Emit(OpCodes.Stfld, typeof(SharedValue).GetField("value"));
         }
     }
 }
Пример #6
0
 private void BeginEmitPopLocal(LocalAddress address)
 {
     var builder = mLocalBuilders[address.index];
     if (builder is ParameterBuilder) {
         //
     } else {
         LocalBuilder localBuilder = builder as LocalBuilder;
         if (localBuilder.LocalType == typeof(object)) {
             //
         } else {
             JITInterpreter_DS2.EmitLoadLocal(mILGenerator, localBuilder);
         }
     }
 }
Пример #7
0
 private void EndEmitPopLocal(LocalAddress address)
 {
     string localName = mLambdaNode.locals[address.index];
     if (mHeapEnvFieldBuilders.ContainsKey(localName)) {
         mILGenerator.Emit(OpCodes.Stfld, mHeapEnvFieldBuilders[localName]);
     } else if (address.index < mLambdaNode.formalCount) {
         JITInterpreter_DS.EmitStoreArg(mILGenerator, HasThisArgument(), mArgBuilders[address.index]);
     } else {
         JITInterpreter_DS.EmitStoreLocal(mILGenerator, mLocalBuilders[address.index - mLambdaNode.formalCount]);
     }
 }
Пример #8
0
 private void BeginEmitPopLocal(LocalAddress address)
 {
     string localName = mLambdaNode.locals[address.index];
     if (mHeapEnvFieldBuilders.ContainsKey(localName)) {
         JITInterpreter_DS.EmitLoadLocal(mILGenerator, mHeapEnvBuilder);
     } else if (address.index < mLambdaNode.formalCount) {
         //
     } else {
         //
     }
 }