avr: switch to iterative code for Widget_TreeMatchFlagsAndSendSignalToActive
This commit is contained in:
@@ -1099,6 +1099,8 @@ Widget_TreeMatchOptsAndSendSignalToActive_done:
|
|||||||
; @param xh param2
|
; @param xh param2
|
||||||
; @clobbers any, !R16, !R17, !X, !Z
|
; @clobbers any, !R16, !R17, !X, !Z
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
; non-iterative routine
|
||||||
Widget_TreeMatchFlagsAndSendSignalToActive:
|
Widget_TreeMatchFlagsAndSendSignalToActive:
|
||||||
push zl
|
push zl
|
||||||
push zh
|
push zh
|
||||||
@@ -1141,6 +1143,53 @@ Widget_TreeMatchFlagsAndSendSignalToActive_done:
|
|||||||
ret
|
ret
|
||||||
; @end
|
; @end
|
||||||
|
|
||||||
|
#else
|
||||||
|
; iterative routine
|
||||||
|
|
||||||
|
Widget_TreeMatchFlagsAndSendSignalToActive:
|
||||||
|
rcall OBJ_IsObject
|
||||||
|
brcc Widget_TreeMatchFlagsAndSendSignalToActive_ret
|
||||||
|
rcall widgetTreeMatchFlagsAndSendSignalToActive
|
||||||
|
Widget_TreeMatchFlagsAndSendSignalToActive_ret:
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
widgetTreeMatchFlagsAndSendSignalToActive:
|
||||||
|
push zl
|
||||||
|
push zh
|
||||||
|
; check flags
|
||||||
|
rcall Widget_GetSdramPtr ; (none)
|
||||||
|
ldd r18, Y+WIDGET_SD_OFFS_FLAGS
|
||||||
|
sbrs r18, WIDGET_FLAGS_ACTIVE_BIT
|
||||||
|
rjmp widgetTreeMatchFlagsAndSendSignalToActive_done ; skip inactive branches
|
||||||
|
eor r18, r21 ; XOR with value (1 if different)
|
||||||
|
and r18, r20 ; AND with mask
|
||||||
|
brne widgetTreeMatchFlagsAndSendSignalToActive_l1
|
||||||
|
push r20
|
||||||
|
push r21
|
||||||
|
rcall OBJ_HandleSignalSaveInRegs
|
||||||
|
pop r21
|
||||||
|
pop r20
|
||||||
|
widgetTreeMatchFlagsAndSendSignalToActive_l1:
|
||||||
|
bigcall OBJ_GetFirstChild
|
||||||
|
widgetTreeMatchFlagsAndSendSignalToActive_loop:
|
||||||
|
brcc widgetTreeMatchFlagsAndSendSignalToActive_done
|
||||||
|
mov zl, r18
|
||||||
|
mov zh, r19
|
||||||
|
rcall widgetTreeMatchFlagsAndSendSignalToActive
|
||||||
|
bigcall OBJ_GetNext
|
||||||
|
rjmp widgetTreeMatchFlagsAndSendSignalToActive_loop
|
||||||
|
|
||||||
|
widgetTreeMatchFlagsAndSendSignalToActive_done:
|
||||||
|
pop zh
|
||||||
|
pop zl
|
||||||
|
ret
|
||||||
|
; @end
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
; ---------------------------------------------------------------------------
|
; ---------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user