Skip to content

Commit

Permalink
Address additional review feedback
Browse files Browse the repository at this point in the history
  • Loading branch information
adamperlin committed Jul 14, 2022
1 parent b25fa0c commit ed11f7c
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 14 deletions.
19 changes: 7 additions & 12 deletions src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1562,13 +1562,7 @@ private void EmitStaticCall(MethodSymbol method, BoundExpression receiverOpt, Im

[MethodImpl(MethodImplOptions.NoInlining)]
private void EmitStaticCallExpression(BoundCall call, UseKind useKind)
{
var method = call.Method;
var receiver = call.ReceiverOpt;
var arguments = call.Arguments;

EmitStaticCall(method, receiver, arguments, useKind, call.Syntax, call.ArgumentRefKindsOpt);
}
=> EmitStaticCall(call.Method, call.ReceiverOpt, call.Arguments, useKind, call.Syntax, call.ArgumentRefKindsOpt);

[MethodImpl(MethodImplOptions.NoInlining)]
private void EmitInstanceCallExpression(BoundCall call, UseKind useKind)
Expand Down Expand Up @@ -1922,17 +1916,18 @@ private void EmitArrayLength(BoundArrayLength expression, bool used)
EmitPopIfUnused(used);
}

private void EmitUninitializedArrayCreation(BoundArrayCreation expression, SyntaxNode syntax, MethodSymbol allocUninitialized)
private void EmitUninitializedArrayCreation(int initializerLength, SyntaxNode syntax, MethodSymbol allocUninitialized)
{
var arrLen = ConstantValue.Create(expression.InitializerOpt.Initializers.Length);
BoundExpression receiverOpt = null;

var arrLen = ConstantValue.Create(initializerLength);
var pinned = ConstantValue.Create(false);

var arg1 = new BoundLiteral(syntax, arrLen, _module.Compilation.GetSpecialType(SpecialType.System_Int32));
var arg2 = new BoundLiteral(syntax, pinned, _module.Compilation.GetSpecialType(SpecialType.System_Boolean));

var arguments = ImmutableArray.Create<BoundExpression>(arg1, arg2);

EmitStaticCall(allocUninitialized, null, arguments, UseKind.UsedAsValue, syntax,
EmitStaticCall(allocUninitialized, receiverOpt, arguments, UseKind.UsedAsValue, syntax,
ImmutableArray.Create(RefKind.None, RefKind.None));
}

Expand All @@ -1945,7 +1940,7 @@ private void EmitArrayCreationExpression(BoundArrayCreation expression, bool use
if (expression.InitializerOpt != null && allocUninitialized is MethodSymbol { } alloc)
{
var constructed = alloc.Construct(ImmutableArray.Create(arrayType.ElementType));
EmitUninitializedArrayCreation(expression, expression.Syntax, constructed);
EmitUninitializedArrayCreation(expression.InitializerOpt.Initializers.Length, expression.Syntax, constructed);
}
else
{
Expand Down
1 change: 0 additions & 1 deletion src/Compilers/CSharp/Test/Emit/CodeGen/CodeGenTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17125,7 +17125,6 @@ partial void M(in int i)
System.Console.WriteLine(""in called"");
}
}
static class Program {
static void Main()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -623,7 +623,6 @@ public void AllWellKnownTypes()
case WellKnownType.System_Runtime_CompilerServices_ITuple:
case WellKnownType.System_Runtime_CompilerServices_NonNullTypesAttribute:
case WellKnownType.Microsoft_CodeAnalysis_EmbeddedAttribute:
case WellKnownType.System_GC:
// Not always available.
continue;
case WellKnownType.ExtSentinel:
Expand Down

0 comments on commit ed11f7c

Please sign in to comment.