public bool TryGetMethodNameAndSignaturePointersFromNativeLayoutSignature(TypeManagerHandle module, uint methodNameAndSigToken, out RuntimeSignature methodNameSig, out RuntimeSignature methodSig) { methodNameSig = default(RuntimeSignature); methodSig = default(RuntimeSignature); NativeReader reader = GetNativeLayoutInfoReader(module); NativeParser parser = new NativeParser(reader, methodNameAndSigToken); if (parser.IsNull) { return(false); } methodNameSig = RuntimeSignature.CreateFromNativeLayoutSignature(module, parser.Offset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); methodSig = RuntimeSignature.CreateFromNativeLayoutSignature(module, sigParser.Offset); return(true); }
public bool TryGetMethodNameAndSignaturePointersFromNativeLayoutSignature(IntPtr module, uint methodNameAndSigToken, out IntPtr methodNameSigPtr, out IntPtr methodSigPtr) { methodNameSigPtr = default(IntPtr); methodSigPtr = default(IntPtr); NativeReader reader = GetNativeLayoutInfoReader(module); uint offset = methodNameAndSigToken; NativeParser parser = new NativeParser(reader, offset); if (parser.IsNull) { return(false); } methodNameSigPtr = parser.Reader.OffsetToAddress(parser.Offset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); methodSigPtr = sigParser.Reader.OffsetToAddress(sigParser.Offset); return(true); }
public NativeParser GetNext() { for (;;) { while (_parser.Offset < _endOffset) { _parser.GetUInt8(); return(_parser.GetParserFromRelativeOffset()); } if (_currentBucket >= _table._bucketMask) { return(default);
internal MethodNameAndSignature GetMethodNameAndSignature(ref NativeParser parser, TypeManagerHandle moduleHandle, out RuntimeSignature methodNameSig, out RuntimeSignature methodSig) { methodNameSig = RuntimeSignature.CreateFromNativeLayoutSignature(moduleHandle, parser.Offset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); methodSig = RuntimeSignature.CreateFromNativeLayoutSignature(moduleHandle, sigParser.Offset); return(new MethodNameAndSignature(methodName, methodSig)); }
internal MethodNameAndSignature GetMethodNameAndSignature(ref NativeParser parser, out IntPtr methodNameSigPtr, out IntPtr methodSigPtr) { methodNameSigPtr = parser.Reader.OffsetToAddress(parser.Offset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); methodSigPtr = sigParser.Reader.OffsetToAddress(sigParser.Offset); return(new MethodNameAndSignature(methodName, RuntimeMethodSignature.CreateFromNativeLayoutSignature(methodSigPtr))); }
private MethodNameAndSignature GetMethodNameAndSignatureFromNativeReader(NativeReader nativeLayoutReader, IntPtr moduleHandle, uint nativeLayoutOffset) { NativeParser parser = new NativeParser(nativeLayoutReader, nativeLayoutOffset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); RuntimeSignature methodSig = RuntimeSignature.CreateFromNativeLayoutSignature(moduleHandle, sigParser.Offset); return(new MethodNameAndSignature(methodName, methodSig)); }
public MethodNameAndSignature GetMethodNameAndSignatureFromNativeReader(NativeReader nativeLayoutReader, uint nativeLayoutOffset) { NativeParser parser = new NativeParser(nativeLayoutReader, nativeLayoutOffset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); IntPtr methodSigPtr = sigParser.Reader.OffsetToAddress(sigParser.Offset); return new MethodNameAndSignature(methodName, methodSigPtr); }
public MethodNameAndSignature GetMethodNameAndSignatureFromNativeReader(NativeReader nativeLayoutReader, uint nativeLayoutOffset) { NativeParser parser = new NativeParser(nativeLayoutReader, nativeLayoutOffset); string methodName = parser.GetString(); // Signatures are indirected to through a relative offset so that we don't have to parse them // when not comparing signatures (parsing them requires resolving types and is tremendously // expensive). NativeParser sigParser = parser.GetParserFromRelativeOffset(); IntPtr methodSigPtr = sigParser.Reader.OffsetToAddress(sigParser.Offset); return(new MethodNameAndSignature(methodName, methodSigPtr)); }
public NativeParser GetNext() { for (; ;) { while (_parser.Offset < _endOffset) { byte lowHashcode = _parser.GetByte(); return(_parser.GetParserFromRelativeOffset()); } if (_currentBucket >= _table._bucketMask) { return(new NativeParser()); } _currentBucket++; _parser = _table.GetParserForBucket(_currentBucket, out _endOffset); } }