@@ -7594,32 +7594,52 @@ if (needstype || needsscript)
75947594 }
75957595
75967596 cc = ccbegin ;
7597- }
75987597
7599- if (needschar )
7600- OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
7598+ if (needstype )
7599+ {
7600+ /* TMP2 has already been shifted by 2 */
7601+ if (!needschar )
7602+ {
7603+ OP2 (SLJIT_ADD , TMP1 , 0 , TMP2 , 0 , TMP2 , 0 );
7604+ OP2 (SLJIT_ADD , TMP1 , 0 , TMP1 , 0 , TMP2 , 0 );
7605+
7606+ OP1 (SLJIT_MOV_U8 , TMP1 , 0 , SLJIT_MEM1 (TMP1 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
7607+ }
7608+ else
7609+ {
7610+ OP2 (SLJIT_ADD , TMP1 , 0 , TMP2 , 0 , TMP2 , 0 );
7611+ OP2 (SLJIT_ADD , TMP2 , 0 , TMP2 , 0 , TMP1 , 0 );
76017612
7602- if (needstype )
7613+ OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
7614+ OP1 (SLJIT_MOV_U8 , RETURN_ADDR , 0 , SLJIT_MEM1 (TMP2 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
7615+ typereg = RETURN_ADDR ;
7616+ }
7617+ }
7618+ else if (needschar )
7619+ OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
7620+ }
7621+ else if (needstype )
76037622 {
7623+ OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
7624+ OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
7625+
76047626 if (!needschar )
76057627 {
7606- OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
7607- OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
76087628 OP2 (SLJIT_ADD , TMP1 , 0 , TMP1 , 0 , TMP2 , 0 );
76097629
76107630 OP1 (SLJIT_MOV_U8 , TMP1 , 0 , SLJIT_MEM1 (TMP1 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
76117631 }
76127632 else
76137633 {
7614- OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
7615- OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
76167634 OP2 (SLJIT_ADD , TMP2 , 0 , TMP2 , 0 , TMP1 , 0 );
76177635
76187636 OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
76197637 OP1 (SLJIT_MOV_U8 , RETURN_ADDR , 0 , SLJIT_MEM1 (TMP2 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
76207638 typereg = RETURN_ADDR ;
76217639 }
76227640 }
7641+ else if (needschar )
7642+ OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
76237643 }
76247644#endif /* SUPPORT_UNICODE */
76257645
0 commit comments