PPC: Reschedule continuation dispatch.

This commit is contained in:
Mike Pall 2010-09-21 21:43:29 +02:00
parent aff6b3080f
commit d270e890f1

View File

@ -542,12 +542,12 @@ static void build_subroutines(BuildCtx *ctx)
| sub BASE, BASE, TMP1 // Restore caller BASE. | sub BASE, BASE, TMP1 // Restore caller BASE.
| lwz LFUNC:TMP1, FRAME_FUNC(BASE) | lwz LFUNC:TMP1, FRAME_FUNC(BASE)
| subi TMP2, RD, 8 | subi TMP2, RD, 8
| mtctr TMP0
| lwz PC, -16(RB) // Restore PC from [cont|PC]. | lwz PC, -16(RB) // Restore PC from [cont|PC].
| lwz TMP1, LFUNC:TMP1->pc | lwz TMP1, LFUNC:TMP1->pc
| evstddx TISNIL, RA, TMP2 // Ensure one valid arg. | evstddx TISNIL, RA, TMP2 // Ensure one valid arg.
| lwz KBASE, PC2PROTO(k)(TMP1) | lwz KBASE, PC2PROTO(k)(TMP1)
| // BASE = base, RA = resultptr, RB = meta base | // BASE = base, RA = resultptr, RB = meta base
| mtctr TMP0
| bctr // Jump to continuation. | bctr // Jump to continuation.
| |
|->cont_cat: // RA = resultptr, RB = meta base |->cont_cat: // RA = resultptr, RB = meta base