**Bug:** HighFive.html couldn't load - "main function not found" **Root Cause:** Incorrect paths in HTML (../runtime/ instead of runtime/) **Fixes:** 1. Updated HighFive.html paths: - ../runtime/ritz-runtime.js → runtime/ritz-runtime.js - ../runtime/ritz-debug.js → runtime/ritz-debug.js - ../runtime/ritz-debug.css → runtime/ritz-debug.css 2. Rebuilt HighFive.wasm with latest codegen (includes LLVM syntax fixes) **Result:** ✅ HighFive example now loads correctly ✅ All runtime scripts found at correct paths 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
105 lines
4.3 KiB
LLVM
105 lines
4.3 KiB
LLVM
; Generated by Ritz Framework with Signals
|
|
; Components: HighFive
|
|
|
|
; String constants
|
|
@.str.0 = private unnamed_addr constant [13 x i8] c"High fives: \00"
|
|
@.str.1 = private unnamed_addr constant [4 x i8] c"div\00"
|
|
@.str.2 = private unnamed_addr constant [6 x i8] c"class\00"
|
|
@.str.3 = private unnamed_addr constant [14 x i8] c"high-five-app\00"
|
|
@.str.4 = private unnamed_addr constant [2 x i8] c"p\00"
|
|
@.str.5 = private unnamed_addr constant [25 x i8] c"Give me a high five! ✋\00"
|
|
@.str.6 = private unnamed_addr constant [6 x i8] c"count\00"
|
|
@.str.7 = private unnamed_addr constant [7 x i8] c"button\00"
|
|
@.str.8 = private unnamed_addr constant [6 x i8] c"click\00"
|
|
@.str.9 = private unnamed_addr constant [10 x i8] c"increment\00"
|
|
@.str.10 = private unnamed_addr constant [11 x i8] c"High Five!\00"
|
|
|
|
; JavaScript bridge function declarations
|
|
declare i32 @js_create_element(i8*)
|
|
declare i32 @js_create_text(i8*)
|
|
declare i32 @js_create_text_with_int(i8*, i32)
|
|
declare void @js_append_child(i32, i32)
|
|
declare void @js_set_attribute(i32, i8*, i8*)
|
|
declare void @js_set_root(i32)
|
|
declare void @js_bind_event(i32, i8*, i8*)
|
|
declare void @js_update_text_content(i32, i8*)
|
|
declare void @js_update_text_with_int(i32, i8*, i32)
|
|
declare i32 @js_create_marker()
|
|
declare void @js_replace_at_marker(i32, i32, i32)
|
|
|
|
; Signal storage for HighFive (reactive state in WASM memory)
|
|
@signal_HighFive_high_fives = global i32 0
|
|
|
|
; Reactive text node storage
|
|
@reactive_text_0_node = global i32 0
|
|
|
|
; Signal helper functions
|
|
define i32 @get_high_fives() {
|
|
entry:
|
|
%val = load i32, i32* @signal_HighFive_high_fives
|
|
ret i32 %val
|
|
}
|
|
|
|
define void @set_high_fives(i32 %newval) {
|
|
entry:
|
|
store i32 %newval, i32* @signal_HighFive_high_fives
|
|
; TODO: Trigger DOM update callback
|
|
ret void
|
|
}
|
|
|
|
; Event handler: increment
|
|
define void @increment() {
|
|
entry:
|
|
%var0 = load i32, i32* @signal_HighFive_high_fives
|
|
%var1 = add i32 %var0, 1
|
|
store i32 %var1, i32* @signal_HighFive_high_fives
|
|
%var2 = load i32, i32* @reactive_text_0_node
|
|
%var3 = getelementptr inbounds [13 x i8], [13 x i8]* @.str.0, i32 0, i32 0
|
|
%var4 = load i32, i32* @signal_HighFive_high_fives
|
|
call void @js_update_text_with_int(i32 %var2, i8* %var3, i32 %var4)
|
|
ret void
|
|
}
|
|
|
|
; Component render function
|
|
define i32 @render_HighFive() {
|
|
entry:
|
|
%var6 = getelementptr inbounds [4 x i8], [4 x i8]* @.str.1, i32 0, i32 0
|
|
%var5 = call i32 @js_create_element(i8* %var6)
|
|
%var7 = getelementptr inbounds [6 x i8], [6 x i8]* @.str.2, i32 0, i32 0
|
|
%var8 = getelementptr inbounds [14 x i8], [14 x i8]* @.str.3, i32 0, i32 0
|
|
call void @js_set_attribute(i32 %var5, i8* %var7, i8* %var8)
|
|
%var10 = getelementptr inbounds [2 x i8], [2 x i8]* @.str.4, i32 0, i32 0
|
|
%var9 = call i32 @js_create_element(i8* %var10)
|
|
%var11 = call i32 @js_create_text(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.5, i32 0, i32 0))
|
|
call void @js_append_child(i32 %var9, i32 %var11)
|
|
call void @js_append_child(i32 %var5, i32 %var9)
|
|
%var13 = getelementptr inbounds [2 x i8], [2 x i8]* @.str.4, i32 0, i32 0
|
|
%var12 = call i32 @js_create_element(i8* %var13)
|
|
%var14 = getelementptr inbounds [6 x i8], [6 x i8]* @.str.2, i32 0, i32 0
|
|
%var15 = getelementptr inbounds [6 x i8], [6 x i8]* @.str.6, i32 0, i32 0
|
|
call void @js_set_attribute(i32 %var12, i8* %var14, i8* %var15)
|
|
%var16 = getelementptr inbounds [13 x i8], [13 x i8]* @.str.0, i32 0, i32 0
|
|
%var17 = load i32, i32* @signal_HighFive_high_fives
|
|
%var18 = call i32 @js_create_text_with_int(i8* %var16, i32 %var17)
|
|
store i32 %var18, i32* @reactive_text_0_node
|
|
call void @js_append_child(i32 %var12, i32 %var18)
|
|
call void @js_append_child(i32 %var5, i32 %var12)
|
|
%var20 = getelementptr inbounds [7 x i8], [7 x i8]* @.str.7, i32 0, i32 0
|
|
%var19 = call i32 @js_create_element(i8* %var20)
|
|
%var21 = getelementptr inbounds [6 x i8], [6 x i8]* @.str.8, i32 0, i32 0
|
|
%var22 = getelementptr inbounds [10 x i8], [10 x i8]* @.str.9, i32 0, i32 0
|
|
call void @js_bind_event(i32 %var19, i8* %var21, i8* %var22)
|
|
%var23 = call i32 @js_create_text(i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.10, i32 0, i32 0))
|
|
call void @js_append_child(i32 %var19, i32 %var23)
|
|
call void @js_append_child(i32 %var5, i32 %var19)
|
|
ret i32 %var5
|
|
}
|
|
|
|
; Main entry point
|
|
define void @main() {
|
|
entry:
|
|
%root = call i32 @render_HighFive()
|
|
call void @js_set_root(i32 %root)
|
|
ret void
|
|
}
|