예제 #1
0
        private unsafe MemoryBlock GetNonVirtualStringMemoryBlock(StringHandle handle)
        {
            Debug.Assert(handle.StringKind != StringKind.Virtual);

            int  bytesRead;
            char otherTerminator = handle.StringKind == StringKind.DotTerminated ? '.' : '\0';
            int  offset          = handle.GetHeapOffset();
            int  length          = Block.GetUtf8NullTerminatedLength(offset, out bytesRead, otherTerminator);

            return(new MemoryBlock(Block.Pointer + offset, length));
        }