1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-26 03:51:32 +00:00

Remove assembly fn call optimizations. (#276)

These were for old platforms and not used in recent history.

There's no NOASMFNCALL flag as there's no more asm fn call code.
This commit is contained in:
Bruce Mitchener
2021-01-25 07:39:32 +07:00
committed by GitHub
parent e90b0f734a
commit cc060be1c7
11 changed files with 1 additions and 2182 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -410,156 +410,6 @@ _xwzq6:
movw a0@(0,d1:l:1),d0
.end
.inline _opreturn,0
movl _CurrentFX,a1 |returnFX = a1
movl #65536,d0
movw a1@(2),d0 |returnFX->alink
lsrl #1,d0 |low bit to carry
jcs ni |jump if slow return
movl a2,a3 |CSTKPTR = IVAR
movl _Lisp_world,a0 |PVar=
lea a0@(0,d0:l:4),a0
movl a0,_PVar
moveq #20,d1
subl d1,a0 |returnFX = a0
movl a0,_CurrentFX |CURRENTFX = returnFX
movl #65536,d0
movw a0@(-2),d0 |returnFX -1
movl _Lisp_world,a1
lea a1@(0,d0:l:2),a2 |IVAR = a2
moveq #0,d0
movb a0@(7),d0 |returnFX->hi2fnheader
swap d0
movw a0@(4),d0 |returnFX->lofnheader
movl _Lisp_world,a1
lea a1@(0,d0:l:2),a1
movl a1,_FuncObj |FuncObj = a1
subl a5,a5
movw a0@(10),a5 |returnFX->pc a5
lea a1@(0,a5:l:1),a5 | a5 + FuncObj
movb a5@,d6
movl a4@(0,d6:l:4),a0
jmp a0@
.end
.inline _fn3,0
moveq #0,d0
movw a5@(1),d0
movl _Defspace,a0
lea a0@(0,d0:l:4),a1 |defcell = a1
movl a1,d4 |save defcell in d4
| movl a1,a6@(-20)
btst #7,a1@
jeq ni
movl a1@,d0 |defcell->defpointer
andl #16777215,d0
movl _Lisp_world,a0
lea a0@(0,d0:l:2),a1 |LOCFNCELL
movl a1,d2 |save LOCFNCELL in a1, d2
| movl a1,a6@(-12)
moveq #0,d0
movw a1@,d0 |LOCFNCELL->stkmin
lea a3@(4,d0:l:2),a0
| addql #4,a0
cmpl _StkLimO,a0
jcc ni |stack overflow
lea a3@(-8),a1 |CSTKPTR-(x<<1)+2
subl _Lisp_world,a1
movl a1,d3
lsrl #1,d3
| movl d3,a1
andl #65535,d3 |NEXTBLOCK = d3
| movl d0,d3
movl _CurrentFX,a1 |a1 = _CurrentFX
movw d3,a1@(8) |CURRENTFX->nextblock =
movl d3,d0
orl #65536,d0
movl _Lisp_world,a0
lea a0@(0,d0:l:2),a2 |IVAR =
| movl _CurrentFX,a0
movl a5,d0
subl _FuncObj,d0
addql #3,d0
movw d0,a1@(10) |CURRENTFX->pc
movl d7,a3@+ |CPushCStack
movl d2,a1 |get LOCFNCELL = a1
movw a1@(2),d0
tstw d0
jlt fn3noargs |no function arguments
| movw a0@(2),d0
extl d0
moveq #2,d1
subl d0,d1
| movl d1,d4
jra fn3ly16
fn3ly17:
clrl a3@+
addql #1,d1
fn3ly16:
tstl d1
jlt fn3ly17
| movl d4,d0
asll #2,d1
subl d1,a3
fn3noargs:
movl d3,d0 |CPush(BF_MARK32 | NEXTBLOCK)
orl #-2147483648,d0
movl d0,a3@+
movl a3,_CurrentFX |CURRENTFX =
movl _PVar,d0
| subl _Lisp_world,d0
subl a0,d0
lsrl #1,d0
andl #65535,d0
orl #-1073741824,d0
movl d0,a3@ |*CSTKPTR=FX_MARK etc
movl d4,a0 |defcell = a0
movw a0@(2),a3@(4) |->lofnheader = ->defpointer
| movl a6@(-20),a0
| movl a0@,d0
| andl #16777215,d0
| movw d0,a3@(4)
| movl d4,a0
| movl a6@(-20),a0
movb a0@(1),a3@(7) |hi2fnheader = *((defcell)+1)
lea a3@(20),a3
movl a3,_PVar |PVar = CSTKPTR
| movl d2,a0
movw a1@(4),d0 ||LOCFNCELL->pv
extl d0
addql #1,d0
| movl d0,a6@(-8)
moveq #-1,d1
jra fn3ly18
fn3ly19:
movl d1,a3@+
movl d1,a3@+
subql #1,d0
fn3ly18:
tstl d0
jgt fn3ly19
addqw #4,a3 | CSTKPTR += 2
| movl d2,a0
| moveq #0,d0
subl a5,a5
movw a1@(6),a5 |LOCFNCELL->startpc
addl a1,a5
| movl d0,a5
movl a1,_FuncObj
.end
|.inline _min,8
| cmp %o0,%o1
| ble,a $10

View File

@@ -1079,10 +1079,6 @@ native_check:
/* TIMER INTERRUPT CHECK ROUTINE */
/************************************************************************/
check_interrupt:
#if (defined(SUN3_OS3_OR_OS4_IL) || defined(I386) || defined(ISC))
asm_label_check_interrupt();
#endif
if ((UNSIGNED)CSTKPTR > (UNSIGNED)EndSTKP) {
EXT;
error("Unrecoverable Stack Overflow");