@@ -7594,32 +7594,52 @@ if (needstype || needsscript)
7594
7594
}
7595
7595
7596
7596
cc = ccbegin ;
7597
- }
7598
7597
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 );
7601
7612
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 )
7603
7622
{
7623
+ OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
7624
+ OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
7625
+
7604
7626
if (!needschar )
7605
7627
{
7606
- OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
7607
- OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
7608
7628
OP2 (SLJIT_ADD , TMP1 , 0 , TMP1 , 0 , TMP2 , 0 );
7609
7629
7610
7630
OP1 (SLJIT_MOV_U8 , TMP1 , 0 , SLJIT_MEM1 (TMP1 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
7611
7631
}
7612
7632
else
7613
7633
{
7614
- OP2 (SLJIT_SHL , TMP1 , 0 , TMP2 , 0 , SLJIT_IMM , 2 );
7615
- OP2 (SLJIT_SHL , TMP2 , 0 , TMP2 , 0 , SLJIT_IMM , 3 );
7616
7634
OP2 (SLJIT_ADD , TMP2 , 0 , TMP2 , 0 , TMP1 , 0 );
7617
7635
7618
7636
OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
7619
7637
OP1 (SLJIT_MOV_U8 , RETURN_ADDR , 0 , SLJIT_MEM1 (TMP2 ), (sljit_sw )PRIV (ucd_records ) + SLJIT_OFFSETOF (ucd_record , chartype ));
7620
7638
typereg = RETURN_ADDR ;
7621
7639
}
7622
7640
}
7641
+ else if (needschar )
7642
+ OP1 (SLJIT_MOV , TMP1 , 0 , RETURN_ADDR , 0 );
7623
7643
}
7624
7644
#endif /* SUPPORT_UNICODE */
7625
7645
0 commit comments