diff options
Diffstat (limited to 'src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs')
-rw-r--r-- | src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs b/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs index ae062dad6..33ab17d76 100644 --- a/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs +++ b/src/ILCompiler.CppCodeGen/src/CppCodeGen/ILToCppImporter.cs @@ -1003,8 +1003,9 @@ namespace Internal.IL if (IsTypeName(method, "System", "ByReference`1")) { var thisRef = _stack.Pop(); - - PushExpression(StackValueKind.ValueType, ((ExpressionEntry)thisRef).Name + "->_value", method.Signature.ReturnType); + PushExpression(StackValueKind.ByRef, + String.Concat("(", GetSignatureTypeNameAndAddReference(method.Signature.ReturnType), ")", ((ExpressionEntry)thisRef).Name, "->_value"), + method.Signature.ReturnType); return true; } break; @@ -1151,7 +1152,7 @@ namespace Internal.IL { // TODO: Null checks - if (method.IsVirtual) + if (method.IsVirtual && !method.IsFinal && !method.OwningType.IsSealed()) { // TODO: Full resolution of virtual methods if (!method.IsNewSlot) @@ -2613,7 +2614,8 @@ namespace Internal.IL private void ImportUnalignedPrefix(byte alignment) { - throw new NotImplementedException(); + // TODO: + // throw new NotImplementedException(); } private void ImportVolatilePrefix() |