Skip to content

Remove static mutable state from LibCpp2IL 2: Electric Boogaloo#542

Draft
Xpl0itR wants to merge 1 commit intoSamboyCoding:developmentfrom
Xpl0itR:instanced-state
Draft

Remove static mutable state from LibCpp2IL 2: Electric Boogaloo#542
Xpl0itR wants to merge 1 commit intoSamboyCoding:developmentfrom
Xpl0itR:instanced-state

Conversation

@Xpl0itR
Copy link
Copy Markdown
Contributor

@Xpl0itR Xpl0itR commented Apr 9, 2026

  • All metadata and binary structures now use per-instance OwningBinary/OwningMetadata (via ReadableClass base) instead of static LibCpp2IlMain fields
  • LibCpp2IlContext holds all state that was previously global: Binary, Metadata, MethodsByPtr, and global mapper collections
  • Il2CppBinary automatically propagates OwningBinary/OwningMetadata to any ReadableClass it reads via OnReadableCreated
  • Il2CppMetadata sets OwningMetadata on all structures at construction, and exposes SetOwningBinaryOnAllStructures called by the builder
  • Cpp2IL.Core utility methods now take Il2CppBinary as an explicit parameter instead of accessing statics
  • Legacy static API on LibCpp2IlMain marked [Obsolete] for backwards compatibility

@coveralls
Copy link
Copy Markdown

Coverage Report for CI Build 24214080939

Coverage decreased (-0.1%) to 35.264%

Details

  • Coverage decreased (-0.1%) from the base build.
  • Patch coverage: 228 uncovered changes across 43 files (255 of 483 lines covered, 52.8%).
  • 46 coverage regressions across 8 files.

Uncovered Changes

Top 10 Files by Coverage Impact Changed Covered %
LibCpp2IL/LibCpp2IlMain.cs 38 2 5.26%
Cpp2IL.Core/Utils/X86Utils.cs 21 8 38.1%
Cpp2IL.Core/Utils/ArmV7Utils.cs 12 0 0.0%
LibCpp2IL/LibCpp2IlContext.cs 50 38 76.0%
Cpp2IL.Core/Il2CppApiFunctions/NewArm64KeyFunctionAddresses.cs 11 0 0.0%
Cpp2IL.Core/Il2CppApiFunctions/X86KeyFunctionAddresses.cs 11 0 0.0%
Cpp2IL.Core/Utils/Arm64Utils.cs 11 0 0.0%
LibCpp2IL/Metadata/Il2CppTypeDefinition.cs 36 25 69.44%
LibCpp2IL/MetadataUsage.cs 23 12 52.17%
Cpp2IL.Core/Il2CppClassUsefulOffsets.cs 10 0 0.0%

Coverage Regressions

46 previously-covered lines in 8 files lost coverage.

File Lines Losing Coverage Coverage
LibCpp2IL/LibCpp2IlGlobalMapper.cs 38 0.0%
LibCpp2IL/BinaryStructures/Il2CppRGCTXDefinition.cs 2 56.0%
Cpp2IL.Core/Cpp2IlApi.cs 1 56.41%
Cpp2IL.Core/Utils/Arm64Utils.cs 1 0.0%
Cpp2IL.Core/Utils/ArmV7Utils.cs 1 0.0%
LibCpp2IL/Il2CppBinary.cs 1 80.34%
LibCpp2IL/Metadata/Il2CppEventDefinition.cs 1 54.0%
LibCpp2IL/Metadata/Il2CppPropertyDefinition.cs 1 76.19%

Coverage Stats

Coverage Status
Relevant Lines: 11327
Covered Lines: 4480
Line Coverage: 39.55%
Relevant Branches: 6805
Covered Branches: 1914
Branch Coverage: 28.13%
Branches in Coverage %: Yes
Coverage Strength: 263053.76 hits per line

💛 - Coveralls

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants