mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-02-07 15:14:08 +00:00
Merge branch 'master' into v2.1
This commit is contained in:
commit
cc44642cf8
@ -305,11 +305,13 @@ int dasm_link(Dst_DECL, size_t *szp)
|
|||||||
|
|
||||||
while (pos != lastpos) {
|
while (pos != lastpos) {
|
||||||
dasm_ActList p = D->actionlist + b[pos++];
|
dasm_ActList p = D->actionlist + b[pos++];
|
||||||
|
int op = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
int op, action = *p++;
|
int action = *p++;
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case DASM_REL_LG: p++; op = p[-3]; goto rel_pc;
|
case DASM_REL_LG: p++;
|
||||||
case DASM_REL_PC: op = p[-2]; rel_pc: {
|
/* fallthrough */
|
||||||
|
case DASM_REL_PC: {
|
||||||
int shrink = op == 0xe9 ? 3 : ((op&0xf0) == 0x80 ? 4 : 0);
|
int shrink = op == 0xe9 ? 3 : ((op&0xf0) == 0x80 ? 4 : 0);
|
||||||
if (shrink) { /* Shrinkable branch opcode? */
|
if (shrink) { /* Shrinkable branch opcode? */
|
||||||
int lofs, lpos = b[pos];
|
int lofs, lpos = b[pos];
|
||||||
@ -341,9 +343,10 @@ int dasm_link(Dst_DECL, size_t *szp)
|
|||||||
case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */
|
case DASM_LABEL_PC: b[pos++] += ofs; break; /* Fix label offset. */
|
||||||
case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */
|
case DASM_ALIGN: ofs -= (b[pos++]+ofs)&*p++; break; /* Adjust ofs. */
|
||||||
case DASM_EXTERN: p += 2; break;
|
case DASM_EXTERN: p += 2; break;
|
||||||
case DASM_ESC: p++; break;
|
case DASM_ESC: op = *p++; break;
|
||||||
case DASM_MARK: break;
|
case DASM_MARK: break;
|
||||||
case DASM_SECTION: case DASM_STOP: goto stop;
|
case DASM_SECTION: case DASM_STOP: goto stop;
|
||||||
|
default: op = action; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stop: (void)0;
|
stop: (void)0;
|
||||||
|
Loading…
Reference in New Issue
Block a user