@@ -20,22 +20,20 @@ public static bool GenInternalMethod(MethodX metX, CodePrinter prt, GeneratorCon
2020 }
2121 else if ( typeName == "String" )
2222 {
23+ FieldX fldLen = metX . DeclType . Fields . FirstOrDefault (
24+ fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . I4 ) ;
25+ FieldX fldFirstChar = metX . DeclType . Fields . FirstOrDefault (
26+ fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . Char ) ;
27+
2328 if ( metName == "get_Length" )
2429 {
25- FieldX fldLen = metX . DeclType . Fields . FirstOrDefault (
26- fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . I4 ) ;
2730 prt . AppendFormatLine ( @"return arg_0->{0};" ,
2831 genContext . GetFieldName ( fldLen ) ) ;
2932
3033 return true ;
3134 }
3235 else if ( metName == "get_Chars" )
3336 {
34- FieldX fldLen = metX . DeclType . Fields . FirstOrDefault (
35- fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . I4 ) ;
36- FieldX fldFirstChar = metX . DeclType . Fields . FirstOrDefault (
37- fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . Char ) ;
38-
3937 prt . AppendFormatLine ( "IL2CPP_CHECK_RANGE(0, arg_0->{0}, arg_1);" ,
4038 genContext . GetFieldName ( fldLen ) ) ;
4139 prt . AppendFormatLine ( "return ((uint16_t*)&arg_0->{0})[arg_1];" ,
@@ -45,17 +43,22 @@ public static bool GenInternalMethod(MethodX metX, CodePrinter prt, GeneratorCon
4543 }
4644 else if ( metName == "InternalMarvin32HashString" )
4745 {
48- FieldX fldLen = metX . DeclType . Fields . FirstOrDefault (
49- fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . I4 ) ;
50- FieldX fldFirstChar = metX . DeclType . Fields . FirstOrDefault (
51- fld => fld . FieldType . ElementType == dnlib . DotNet . ElementType . Char ) ;
52-
5346 prt . AppendFormatLine ( "return il2cpp_HashString(&arg_0->{0}, arg_0->{1});" ,
5447 genContext . GetFieldName ( fldFirstChar ) ,
5548 genContext . GetFieldName ( fldLen ) ) ;
5649
5750 return true ;
5851 }
52+ else if ( metName == "FastAllocateString" )
53+ {
54+ prt . AppendFormatLine (
55+ "cls_String* str = (cls_String*)IL2CPP_NEW(sizeof(cls_Object) + sizeof(int32_t) + sizeof(uint16_t) * (arg_0 + 1), {0}, 1);" ,
56+ genContext . GetStringTypeID ( ) ) ;
57+ prt . AppendFormatLine ( "str->{0} = arg_0;" ,
58+ genContext . GetFieldName ( fldLen ) ) ;
59+ prt . AppendLine ( "return str;" ) ;
60+ return true ;
61+ }
5962 }
6063 else if ( typeName == "System.Runtime.CompilerServices.RuntimeHelpers" )
6164 {
@@ -115,6 +118,14 @@ public static bool GenInternalMethod(MethodX metX, CodePrinter prt, GeneratorCon
115118 return true ;
116119 }
117120 }
121+ else if ( typeName == "System.Buffer" )
122+ {
123+ if ( metName == "__Memmove" )
124+ {
125+ prt . AppendLine ( "IL2CPP_MEMMOVE(arg_0, arg_1, arg_2);" ) ;
126+ return true ;
127+ }
128+ }
118129 else if ( typeName == "System.Math" )
119130 {
120131 if ( metName == "Abs" )
0 commit comments