From ea45357425c27c2d46c8d0e70c2fa4767d941f44 Mon Sep 17 00:00:00 2001 From: simonmar Date: Fri, 10 Dec 2004 13:34:38 +0000 Subject: [PATCH] [project @ 2004-12-10 13:34:38 by simonmar] stg_sel_##offset##_upd_entry: the ENTER() here is unnecessary, because we know the closure in R1 will evaluate to a constructor, so we can save some time by just entering it directly. --- ghc/rts/StgStdThunks.cmm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/ghc/rts/StgStdThunks.cmm b/ghc/rts/StgStdThunks.cmm index f1e4f08..386036a 100644 --- a/ghc/rts/StgStdThunks.cmm +++ b/ghc/rts/StgStdThunks.cmm @@ -57,13 +57,15 @@ UPD_BH_UPDATABLE(); \ LDV_ENTER(R1); \ PUSH_UPD_FRAME(Sp - SIZEOF_StgUpdateFrame, R1); \ - ENTER_CCS_THUNK(R1); \ + ENTER_CCS_THUNK(R1); \ SAVE_CCCS(WITHUPD_FRAME_SIZE); \ W_[Sp-WITHUPD_FRAME_SIZE] = stg_sel_ret_##offset##_upd_info; \ - R1 = StgClosure_payload(R1,0); \ + R1 = StgClosure_payload(R1,0); \ Sp = Sp - WITHUPD_FRAME_SIZE; \ - ENTER(); \ + jump %GET_ENTRY(R1); \ } + /* NOTE: no need to ENTER() here, we know the closure cannot evaluate to a function, + because we're going to do a field selection on the result. */ SELECTOR_CODE_UPD(0) SELECTOR_CODE_UPD(1) -- 1.7.10.4