Shrink FrameType to be an Int16, as Int32 is completely unnecessary, and that memory space is about to become useful
This commit is contained in:
parent
ba15186bbe
commit
20115f3c84
|
|
@ -5,7 +5,6 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Components;
|
||||
using Microsoft.AspNetCore.Components.Rendering;
|
||||
|
||||
namespace Microsoft.AspNetCore.Components.RenderTree
|
||||
|
|
|
|||
|
|
@ -24,8 +24,8 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
// Offset Type
|
||||
// ------ ----
|
||||
// 0-3 Int32 (sequence number)
|
||||
// 4-7 Int32 (frame type)
|
||||
// 8-15 Value types (usage varies by frame type)
|
||||
// 4-5 Int16 (frame type)
|
||||
// 6-15 Value types (usage varies by frame type)
|
||||
// 16-23 Reference type (usage varies by frame type)
|
||||
// 24-31 Reference type (usage varies by frame type)
|
||||
// 32-39 Reference type (usage varies by frame type)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace Microsoft.AspNetCore.Components.RenderTree
|
|||
/// <summary>
|
||||
/// Describes the type of a <see cref="RenderTreeFrame"/>.
|
||||
/// </summary>
|
||||
public enum RenderTreeFrameType: int
|
||||
public enum RenderTreeFrameType: short
|
||||
{
|
||||
/// <summary>
|
||||
/// Used only for unintialized frames.
|
||||
|
|
|
|||
|
|
@ -313,7 +313,7 @@ namespace Microsoft.AspNetCore.Components.Server
|
|||
{
|
||||
// Assume enums are represented as ints
|
||||
var expectedEntry = expectedEntryIterationVar.GetType().IsEnum
|
||||
? (int)expectedEntryIterationVar
|
||||
? Convert.ToInt32(expectedEntryIterationVar)
|
||||
: expectedEntryIterationVar;
|
||||
|
||||
if (expectedEntry is int expectedInt)
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -114,6 +114,10 @@ export const monoPlatform: Platform = {
|
|||
return (referenceTypedObject as any as number + 8) as any as Pointer;
|
||||
},
|
||||
|
||||
readInt16Field: function readHeapInt16(baseAddress: Pointer, fieldOffset?: number): number {
|
||||
return Module.getValue((baseAddress as any as number) + (fieldOffset || 0), 'i16');
|
||||
},
|
||||
|
||||
readInt32Field: function readHeapInt32(baseAddress: Pointer, fieldOffset?: number): number {
|
||||
return Module.getValue((baseAddress as any as number) + (fieldOffset || 0), 'i32');
|
||||
},
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ export interface Platform {
|
|||
getArrayEntryPtr<TPtr extends Pointer>(array: System_Array<TPtr>, index: number, itemSize: number): TPtr;
|
||||
|
||||
getObjectFieldsBaseAddress(referenceTypedObject: System_Object): Pointer;
|
||||
readInt16Field(baseAddress: Pointer, fieldOffset?: number): number;
|
||||
readInt32Field(baseAddress: Pointer, fieldOffset?: number): number;
|
||||
readFloatField(baseAddress: Pointer, fieldOffset?: number): number;
|
||||
readObjectField<T extends System_Object>(baseAddress: Pointer, fieldOffset?: number): T;
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ const editReader = {
|
|||
// Keep in sync with memory layout in RenderTreeFrame.cs
|
||||
const frameReader = {
|
||||
structLength: 36,
|
||||
frameType: (frame: RenderTreeFrame) => platform.readInt32Field(frame as any, 4) as FrameType,
|
||||
frameType: (frame: RenderTreeFrame) => platform.readInt16Field(frame as any, 4) as FrameType,
|
||||
subtreeLength: (frame: RenderTreeFrame) => platform.readInt32Field(frame as any, 8),
|
||||
elementReferenceCaptureId: (frame: RenderTreeFrame) => platform.readStringField(frame as any, 16),
|
||||
componentId: (frame: RenderTreeFrame) => platform.readInt32Field(frame as any, 12),
|
||||
|
|
|
|||
|
|
@ -272,7 +272,7 @@ namespace Ignitor
|
|||
{
|
||||
// Assume enums are represented as ints
|
||||
var expectedEntry = expectedEntryIterationVar.GetType().IsEnum
|
||||
? (int)expectedEntryIterationVar
|
||||
? Convert.ToInt32(expectedEntryIterationVar)
|
||||
: expectedEntryIterationVar;
|
||||
|
||||
if (expectedEntry is int expectedInt)
|
||||
|
|
|
|||
Loading…
Reference in New Issue