Exemple #1
0
 internal WorkerThread(CodeAssembly asm)
 {
     Assembly  = asm;
     Module    = asm.GetRootModule();
     CallStack = new CallStack();
     Context   = new ExecutionContext();
 }
Exemple #2
0
        public GrpcClient(
            GrpcOptions options,
            GrpcServiceCallBuilder serviceCallBuilder,
            IBinarySerializer binarySerializer)
        {
            _options = options;

            ID             = Guid.NewGuid();
            GrpcServiceDic = new Dictionary <Type, Type>();
            var namespaces = $"Kadder.Client.Services";

            _codeBuilder = new CodeBuilder(namespaces, namespaces);
            var grpcServiceDic = serviceCallBuilder
                                 .GenerateHandler(_options, this, ref _codeBuilder);

            _codeAssembly     = _codeBuilder.BuildAsync().Result;
            _binarySerializer = binarySerializer;

            GrpcClientExtension.ClientDic.Add(ID.ToString(), this);
            foreach (var item in grpcServiceDic)
            {
                var type = _codeAssembly.Assembly.GetType(item.Value);
                GrpcServiceDic.Add(item.Key, type);
            }
        }
Exemple #3
0
        internal override ElaValue Untag(CodeAssembly asm, ExecutionContext ctx, int index)
        {
            if (index != 0)
            {
                ctx.Fail(new ElaError(ElaRuntimeError.InvalidTypeArgument, asm.Constructors[tag].Name, typeName, index + 1));
                return(Default());
            }

            return(Value);
        }
Exemple #4
0
        internal CompiledAssembly(Document rootDoc, CodeAssembly asm)
        {
            Assembly = asm;
            Units    = Assembly.EnumerateModules()
                       .Select(n => Assembly.GetModule(Assembly.GetModuleHandle(n)))
                       .Select(m => new CompiledUnit(new VirtualDocument(m.File.ToFileInfo()), m))
                       .ToList();
            var root = Assembly.GetRootModule();

            MainUnit = new CompiledUnit(rootDoc, root);
        }
Exemple #5
0
        private void ExecuteInput(CodeAssembly asm)
        {
            if (vm == null)
            {
                vm = new ElaMachine(asm);
            }
            else
            {
                vm.RefreshState();
                vm.Recover();
            }

            var mod = asm.GetRootModule();
            var os  = lastOffset;

            lastOffset = mod.Ops.Count;

            try
            {
                Con.Invoke(() => { Con.ReadOnly = true; });
                var exer = vm.Run(os);

                if (exer.ReturnValue.TypeCode != Ela.ElaTypeCode.Unit)
                {
                    Con.Invoke(() => Con.PrintLine(exer.ReturnValue.ToString()));
                }
            }
            catch (ElaCodeException ex)
            {
                Con.Invoke(() => Con.PrintLine("``!!!ELA" + ex.Error.Code + ": " + ex.Error.Message));
            }
            catch (Exception) { }
            finally
            {
                Con.Invoke(() => { Con.ReadOnly = false; });
                Con.PrintLine();
                Con.PrintLine();
                Con.Print(Con.Prompt + ">");
                Con.ScrollToCaret();
                App.GetService <IStatusBarService>().ClearStatusString();
            }
        }
Exemple #6
0
        public GrpcClient(GrpcClientMetadata metadata, GrpcClientBuilder builder, GrpcServiceCallBuilder serviceCallBuilder)
        {
            _clientBuilder     = builder;
            _metadata          = metadata;
            _options           = metadata.Options;
            ID                 = Guid.NewGuid();
            _lastConnectedTime = DateTime.Now;
            GrpcServiceDic     = new Dictionary <Type, Type>();
            _oldMethodDic      = new Dictionary <string, string>();
            var namespaces = $"Kadder.Client.Services";

            _codeBuilder = new CodeBuilder(namespaces, namespaces);

            var grpcServiceDic = serviceCallBuilder.GenerateHandler(_options, this, ref _codeBuilder);

            _codeAssembly = _codeBuilder.BuildAsync().Result;
            GrpcClientExtension.ClientDic.Add(ID.ToString(), this);
            foreach (var keyValuePair in grpcServiceDic)
            {
                var type = _codeAssembly.Assembly.GetType(keyValuePair.Value);
                GrpcServiceDic.Add(keyValuePair.Key, type);
            }
        }
Exemple #7
0
 private static void Warmup(CodeAssembly asm)//GIT
 {
     helper.PrintExecuteFirstTime();
     new ElaMachine(asm).Run();
     helper.PrintExecuteSecondTime();
 }
Exemple #8
0
        private static int Execute(CodeAssembly asm, bool interactive)
        {
            var mod = asm.GetRootModule();

            if (opt.ShowEil)
            {
                var gen = new EilGenerator(mod);
                Console.WriteLine("EIL ({0}-{1}):", lastOffset, mod.Ops.Count - 1);
                Console.Write(gen.Generate(lastOffset));
                lastOffset = mod.Ops.Count;
            }
            else if (opt.ShowSymbols != SymTables.None)
            {
                var gen = new DebugReader(mod.Symbols);
                helper.PrintSymTables(gen);
                lastOffset = mod.Ops.Count;
            }
            else
            {
                try
                {
                    if (vm == null)
                    {
                        vm = new ElaMachine(asm);
                        vm.AddTracePointListener(new TracePointListener());
                    }
                    else
                    {
                        vm.RefreshState();
                        vm.Recover();
                    }

                    if (opt.ShowTime != 0 && !interactive)
                    {
                        Warmup(asm); //GIT
                    }
                    var os = lastOffset;
                    lastOffset = mod.Ops.Count;
                    var sw = new Stopwatch();
                    sw.Start();
                    var exer = default(ExecutionResult);

                    if (opt.ShowTime != 0)
                    {
                        for (var i = 0; i < opt.ShowTime; i++)
                        {
                            exer = vm.Run(os);
                        }

                        sw.Stop();
                    }
                    else
                    {
                        exer = vm.Run(os);
                    }

                    if (opt.ShowTime != 0 && !interactive)
                    {
                        Console.WriteLine("Executed: {0} time(s). Execution time: {1}", opt.ShowTime, sw.Elapsed);
                    }

                    if (exer.ReturnValue.TypeCode != ElaTypeCode.None && exer.ReturnValue.TypeCode != ElaTypeCode.Unit)
                    {
                        Console.WriteLine(vm.PrintValue(exer.ReturnValue));
                    }
                }
                catch (ElaException ex)
                {
                    helper.PrintError(ex.ToString());
                    return(R_ERR);
                }
            }

            return(R_OK);
        }
Exemple #9
0
 internal virtual ElaValue Untag(CodeAssembly asm, ExecutionContext ctx, int index)
 {
     ctx.Fail(new ElaError(ElaRuntimeError.InvalidTypeArgument, "<>", GetTypeName(), index + 1));
     return(Default());
 }
Exemple #10
0
 internal ElaDebugger(CodeAssembly asm)
 {
     Assembly = asm;
 }