/[pcre]/code/trunk/sljit/sljitNativeARM_Thumb2.c
ViewVC logotype

Diff of /code/trunk/sljit/sljitNativeARM_Thumb2.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 879 by zherczeg, Sat Jan 14 17:05:53 2012 UTC revision 880 by zherczeg, Sun Jan 15 17:23:37 2012 UTC
# Line 1101  static SLJIT_INLINE int emit_op_mem(stru Line 1101  static SLJIT_INLINE int emit_op_mem(stru
1101          return getput_arg(compiler, flags, reg, arg, argw, 0, 0);          return getput_arg(compiler, flags, reg, arg, argw, 0, 0);
1102  }  }
1103    
1104  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_enter(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
1105  {  {
1106          int size;          int size;
1107          sljit_ins push;          sljit_ins push;
1108    
1109          CHECK_ERROR();          CHECK_ERROR();
1110          check_sljit_emit_enter(compiler, args, temporaries, generals, local_size);          check_sljit_emit_enter(compiler, args, temporaries, saveds, local_size);
1111    
1112          compiler->temporaries = temporaries;          compiler->temporaries = temporaries;
1113          compiler->generals = generals;          compiler->saveds = saveds;
1114    
1115          push = (1 << 4);          push = (1 << 4);
1116          if (generals >= 5)          if (saveds >= 5)
1117                  push |= 1 << 11;                  push |= 1 << 11;
1118          if (generals >= 4)          if (saveds >= 4)
1119                  push |= 1 << 10;                  push |= 1 << 10;
1120          if (generals >= 3)          if (saveds >= 3)
1121                  push |= 1 << 8;                  push |= 1 << 8;
1122          if (generals >= 2)          if (saveds >= 2)
1123                  push |= 1 << 7;                  push |= 1 << 7;
1124          if (generals >= 1)          if (saveds >= 1)
1125                  push |= 1 << 6;                  push |= 1 << 6;
1126          if (temporaries >= 5)          if (temporaries >= 5)
1127                  push |= 1 << 5;                  push |= 1 << 5;
1128          FAIL_IF(generals >= 3          FAIL_IF(saveds >= 3
1129                  ? push_inst32(compiler, PUSH_W | (1 << 14) | push)                  ? push_inst32(compiler, PUSH_W | (1 << 14) | push)
1130                  : push_inst16(compiler, PUSH | push));                  : push_inst16(compiler, PUSH | push));
1131    
1132          /* Stack must be aligned to 8 bytes: */          /* Stack must be aligned to 8 bytes: */
1133          size = (3 + generals) * sizeof(sljit_uw);          size = (3 + saveds) * sizeof(sljit_uw);
1134          local_size += size;          local_size += size;
1135          local_size = (local_size + 7) & ~7;          local_size = (local_size + 7) & ~7;
1136          local_size -= size;          local_size -= size;
# Line 1143  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1143  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1143          }          }
1144    
1145          if (args >= 1)          if (args >= 1)
1146                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG1, SLJIT_TEMPORARY_REG1)));                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG1, SLJIT_TEMPORARY_REG1)));
1147          if (args >= 2)          if (args >= 2)
1148                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG2, SLJIT_TEMPORARY_REG2)));                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG2, SLJIT_TEMPORARY_REG2)));
1149          if (args >= 3)          if (args >= 3)
1150                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_GENERAL_REG3, SLJIT_TEMPORARY_REG3)));                  FAIL_IF(push_inst16(compiler, MOV | SET_REGS44(SLJIT_SAVED_REG3, SLJIT_TEMPORARY_REG3)));
1151    
1152          return SLJIT_SUCCESS;          return SLJIT_SUCCESS;
1153  }  }
1154    
1155  SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int generals, int local_size)  SLJIT_API_FUNC_ATTRIBUTE void sljit_set_context(struct sljit_compiler *compiler, int args, int temporaries, int saveds, int local_size)
1156  {  {
1157          int size;          int size;
1158    
1159          CHECK_ERROR_VOID();          CHECK_ERROR_VOID();
1160          check_sljit_set_context(compiler, args, temporaries, generals, local_size);          check_sljit_set_context(compiler, args, temporaries, saveds, local_size);
1161    
1162          compiler->temporaries = temporaries;          compiler->temporaries = temporaries;
1163          compiler->generals = generals;          compiler->saveds = saveds;
1164    
1165          size = (3 + generals) * sizeof(sljit_uw);          size = (3 + saveds) * sizeof(sljit_uw);
1166          local_size += size;          local_size += size;
1167          local_size = (local_size + 7) & ~7;          local_size = (local_size + 7) & ~7;
1168          local_size -= size;          local_size -= size;
# Line 1186  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1186  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1186          }          }
1187    
1188          pop = (1 << 4);          pop = (1 << 4);
1189          if (compiler->generals >= 5)          if (compiler->saveds >= 5)
1190                  pop |= 1 << 11;                  pop |= 1 << 11;
1191          if (compiler->generals >= 4)          if (compiler->saveds >= 4)
1192                  pop |= 1 << 10;                  pop |= 1 << 10;
1193          if (compiler->generals >= 3)          if (compiler->saveds >= 3)
1194                  pop |= 1 << 8;                  pop |= 1 << 8;
1195          if (compiler->generals >= 2)          if (compiler->saveds >= 2)
1196                  pop |= 1 << 7;                  pop |= 1 << 7;
1197          if (compiler->generals >= 1)          if (compiler->saveds >= 1)
1198                  pop |= 1 << 6;                  pop |= 1 << 6;
1199          if (compiler->temporaries >= 5)          if (compiler->temporaries >= 5)
1200                  pop |= 1 << 5;                  pop |= 1 << 5;
1201          return compiler->generals >= 3          return compiler->saveds >= 3
1202                  ? push_inst32(compiler, POP_W | (1 << 15) | pop)                  ? push_inst32(compiler, POP_W | (1 << 15) | pop)
1203                  : push_inst16(compiler, POP | pop);                  : push_inst16(compiler, POP | pop);
1204  }  }
# Line 1645  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_ Line 1645  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_
1645  /*  Other instructions                                                   */  /*  Other instructions                                                   */
1646  /* --------------------------------------------------------------------- */  /* --------------------------------------------------------------------- */
1647    
1648  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int generals, int local_size)  SLJIT_API_FUNC_ATTRIBUTE int sljit_emit_fast_enter(struct sljit_compiler *compiler, int dst, sljit_w dstw, int args, int temporaries, int saveds, int local_size)
1649  {  {
1650          int size;          int size;
1651    
1652          CHECK_ERROR();          CHECK_ERROR();
1653          check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, generals, local_size);          check_sljit_emit_fast_enter(compiler, dst, dstw, args, temporaries, saveds, local_size);
1654    
1655          compiler->temporaries = temporaries;          compiler->temporaries = temporaries;
1656          compiler->generals = generals;          compiler->saveds = saveds;
1657    
1658          size = (3 + generals) * sizeof(sljit_uw);          size = (3 + saveds) * sizeof(sljit_uw);
1659          local_size += size;          local_size += size;
1660          local_size = (local_size + 7) & ~7;          local_size = (local_size + 7) & ~7;
1661          local_size -= size;          local_size -= size;

Legend:
Removed from v.879  
changed lines
  Added in v.880

  ViewVC Help
Powered by ViewVC 1.1.5