class C {
static function f() as Void {}
}
class D {
function g() as Void {
C.f();
}
}
Compiler options are "-w -l 3 -O 3".
Assembler code for 8.0, 8.2.3, 8.3.0, 8.4.0:
globals/D/g:
argc 1
getselfv C
getsv f
invokemz
popv
return
globals/D/g_func_end:
Assembler code for SDK 7, and 8.1.1:
globals/D/g:
argc 1
getmv globals C
getsv f
invokemz
popv
return
globals/D/g_func_end:
I have already reported it, and it was fixed in 8.1.1, but it is broken again: https://forums.garmin.com/developer/connect-iq/i/bug-reports/sdk-8-2-3-member-lookup-is-broken-both-in-type-checker-and-compiler.
At best, it is a HUGE performance regression, since compile-time lookups are replaced with runtime lookups in almost every line of Monkey C code.