feat(llvm): Comprehensive LLVM backend improvements by ChatGPT
Major enhancements to LLVM code generation and type handling: 1. String Operations: - Added StringBox length fast-path (length/len methods) - Converts i8* to handle when needed for len_h call - Consistent handle-based string operations 2. Array/Map Fast-paths: - ArrayBox: get/set/push/length operations - MapBox: get/set/has/size with handle-based keys - Optimized paths for common collection operations 3. Field Access: - getField/setField implementation with handle conversion - Proper i64 handle to pointer conversions 4. NewBox Improvements: - StringBox/IntegerBox pass-through optimizations - Fallback to env.box.new when type_id unavailable - Support for dynamic box creation 5. Documentation: - Added ARCHITECTURE.md for overall design - Added EXTERNCALL.md for external call specs - Added LOWERING_LLVM.md for LLVM lowering rules - Added PLUGIN_ABI.md for plugin interface 6. Type System: - Added UserBox type registration in nyash_box.toml - Consistent handle (i64) representation across system Results: More robust LLVM code generation with proper type handling 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -32,3 +32,15 @@ returns = { type = "string" }
|
||||
|
||||
[FileBox.methods.exists]
|
||||
returns = { type = "bool" }
|
||||
|
||||
[ArrayBox]
|
||||
type_id = 3
|
||||
|
||||
[ArrayBox.methods.length]
|
||||
returns = { type = "i64" }
|
||||
|
||||
[MapBox]
|
||||
type_id = 11
|
||||
|
||||
[MapBox.methods.size]
|
||||
returns = { type = "i64" }
|
||||
|
||||
Reference in New Issue
Block a user