doc: add sample Mie IR for Person.im

This commit is contained in:
2025-04-11 13:42:27 +01:00
parent db5843b66f
commit e379afb035

View File

@@ -1,39 +1,146 @@
record package_scope = "net.doorstuck.test"
record package_scope = str "net.doorstuck.test"
record import = { "std.io" }
record import = { str "std.io" }
define void @L0001(id %0) lambda {
data @cout = external global id
data @StringBuffer = external global id
data @.str.0 = str "Received "
data @.str.1 = str ", "
data @.atom.0 = atom "years"
data @.atom.1 = atom "months"
data @.atom.2 = atom "days"
type @_ZN3net9doorstuck4testC6PersonE = class {
id @name,
id @age,
id @val
}
define void @_ZN3net9doorstuck4testC6PersonM4init4name3ageE(id %self, id %0) instance {
%entry:
%1 = getelementptr class @_ZN3net9doorstuck4testC6PersonE, id %self, i32 #0
store id %0, ptr %1
%2 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
store id %1, ptr %2
ret void
}
define void @_ZN3net9doorstuck4testC6PersonM4test5param0E(id %0, id %1) instance {
%entry:
%2 = load id, ptr @cout
; %4 = StringBuilder new
%3 = load id, ptr @StringBuilder
%4 = msg id %3, @_M3newE()
; (void) tempstr append:'Received '
%5 = load id, ptr @.str.0
msg void, id %3, @_M06appendE(id %5)
; (void) tempstr append:data (param 0)
msg void, id %3, @_M06appendE(id %0)
; (void) tempstr append:', '
%6 = load id, ptr @.str.1
msg void, id %3, @_M06appendE(id %6)
; (void) tempstr append:extra (param 1)
msg void, id %3, @_M06appendE(id %1)
; %7 = tempstr toString
%7 = msg id, id %3, @_M8toStringE()
; cout put:'Received {data}, {extra}'
msg void, id %2, @_M03put(id %7)
ret void
}
define id @_ZN3net9doorstuck4testC6PersonM4nameE(id %self) instance {
%entry:
%0 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #0
%1 = load id, ptr %0
ret id %1
}
define id @_ZN3net9doorstuck4testC6PersonM3ageE(id %self) instance {
%entry:
%0 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
%1 = load id, ptr %0
ret id %1
}
define id @_ZN3net9doorstuck4testC6PersonM11ageInMonthsE(id %self, id %0) instance {
%entry:
%1 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
%2 = load id, ptr %1
ret id %1
}
define void @_ZN3net9doorstuck4testC6PersonM07setNameE(id %self, id %1) instance {
%entry:
%2 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
store id %1, ptr %2
ret void
}
define void @_ZN3net9doorstuck4testC6PersonM06setAge6inUnitE(id %self, i32 %1, id %2) instance {
%entry:
%3 = load atom, ptr @.atom.0
%4 = load atom, ptr @.atom.1
%5 = load atom, ptr @.atom.2
switch id %2, label %default [
atom %3, label %years
atom %4, label %months
atom %5, label %days
]
%years:
%6 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
store i32 %2, ptr %6
br label %end
%months:
%7 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
%8 = div i32 %2, #12
store i32 %8, ptr %7
br label %end
%days:
%9 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
%10 = div i32 %2, #365
store i32 %10, ptr %9
br label %end
%default:
%11 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #1
store i32 #0, ptr %11
br label %end
%end:
ret void
}
define id @_ZN3net9doorstuck4testC6PersonM012getAgeInUnitE(id %0, id %1) instance {
%entry:
}
define void @Person::@_M4init4name3ageE(id %0, id %1) instance {
define id @_ZN3net9doorstuck4testC6PersonP15examplePropertyG(id %self) instance {
%entry:
%0 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #2
%1 = load id, ptr %0
ret id %1
}
define void @Person::@_M4test5param0E(id %0, id %1) instance {
}
define id @Person::@_M4nameE(id %0, id %1) instance {
}
define id @Person::@_M3ageE(id %0, id %1) instance {
}
define id @Person::@_M11ageInMonthsE(id %0, id %1) instance {
}
define void @Person::@_M07setNameE(id %0, id %1) instance {
}
define void @Person::@_M06setAge6inUnitE(id %0, id %1) instance {
}
define id @Person::@_M012getAgeInUnitE(id %0, id %1) instance {
define void @_ZN3net9doorstuck4testC6PersonP15examplePropertyS(id %self, id %0) instance {
%entry:
%1 = getelementptr class @_ZN33net9doorstuck4testC6PersonE, id %self, i32 #2
store id %0, ptr %1
ret void
}