示例#1
0
        public void RequestMethod(libtysila.Assembler.MethodToCompile mtc, bool jit_stub)
        {
            if (mtc.type.IsDelegate(ass) && (mtc.meth.Name == ".ctor"))
            {
                // Rewrite delegate constructors
                mtc.msig.Method.Params[1] = new libtysila.Signature.Param(libtysila.BaseType_Type.VirtFtnPtr);
            }

            string mangled_name = mtc.ToString();

            if (compiled_objects.Contains(mangled_name))
            {
                return;
            }
            if (Program.IsCompiled(mangled_name))
            {
                return;
            }
            foreach (JitMethod jm in req_meths)
            {
                if (jm.mtc.Equals(mtc))
                {
                    return;
                }
            }

            base.RequestMethod(mtc);
            req_meths.Add(new JitMethod {
                mtc = mtc, is_jit_stub = jit_stub
            });
        }
示例#2
0
 public libtysila.Assembler.MethodToCompile? GetNextJitMethodInfo()
 {
     if (req_gms.Count > 0)
     {
         libtysila.Assembler.MethodToCompile ret = req_gms[0];
         req_gms.RemoveAt(0);
         compiled_objects.Add(ret.ToString());
         return(ret);
     }
     return(null);
 }