//public DFunctionSignature(int maxArgsCount) //{ // Value = GetMask(maxArgsCount); //} public DFunctionSignature(ref CallFrame callFrame, int maxArgsCount) { Value = EmptySignature.Value; if (callFrame.PassedArgsCount == 0) { return; } var argsCount = callFrame.PassedArgsCount; if (argsCount > maxArgsCount) { argsCount = maxArgsCount; } if (argsCount > TypesPerElement) { return; //throw new System.ArgumentOutOfRangeException("Too many arguments in the function signature!"); } for (var i = argsCount - 1; i >= 0; --i) { InitArgType(i, callFrame.Arg(i).ValueType); } //var tmp = Value; //for (var i = argsCount - 1; i >= 0; --i) // tmp = (tmp << BitsPerType) | (unchecked((uint)callFrame.Arg(i).ValueType) & TypeMask); ////for (var i = argsCount; i < TypesPerElement; ++i) //// tmp = (tmp << TypeBits) | (unchecked((uint)ValueTypes.Unknown) & 0x0F); //Value = tmp; }
//public DFunctionSignature(int maxArgsCount) //{ // Value = GetMask(maxArgsCount); //} public DFunctionSignature(ref CallFrame callFrame, int maxArgsCount) { Value = EmptySignature.Value; if (callFrame.PassedArgsCount == 0) return; var argsCount = callFrame.PassedArgsCount; if (argsCount > maxArgsCount) argsCount = maxArgsCount; if (argsCount > TypesPerElement) { return; //throw new System.ArgumentOutOfRangeException("Too many arguments in the function signature!"); } for (var i = argsCount - 1; i >= 0; --i) InitArgType(i, callFrame.Arg(i).ValueType); //var tmp = Value; //for (var i = argsCount - 1; i >= 0; --i) // tmp = (tmp << BitsPerType) | (unchecked((uint)callFrame.Arg(i).ValueType) & TypeMask); ////for (var i = argsCount; i < TypesPerElement; ++i) //// tmp = (tmp << TypeBits) | (unchecked((uint)ValueTypes.Unknown) & 0x0F); //Value = tmp; }