From dad0f4b4d5649625857844a43101269a67cf617f Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Fri, 6 Apr 2018 17:53:51 -0700 Subject: [PATCH] Add NO-JITC flag to module SYSFLAGS --- src/inc/cmdsys.plh | 1 + src/vmsrc/apple/cmd.pla | 4 +++- src/vmsrc/apple/cmdjit.pla | 20 ++++++++++++-------- src/vmsrc/apple/sossys.pla | 12 ++++++++---- 4 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/inc/cmdsys.plh b/src/inc/cmdsys.plh index d258e54..b225302 100644 --- a/src/inc/cmdsys.plh +++ b/src/inc/cmdsys.plh @@ -33,6 +33,7 @@ import cmdsys const reshgr2 = $0020 const resxhgr1 = $0040 const resxhgr2 = $0080 + const nojitc = $0100 // // Module don't free memory // diff --git a/src/vmsrc/apple/cmd.pla b/src/vmsrc/apple/cmd.pla index 3d8b6a2..300a185 100755 --- a/src/vmsrc/apple/cmd.pla +++ b/src/vmsrc/apple/cmd.pla @@ -1024,7 +1024,7 @@ def loadmod(mod)#1 word addr, defaddr, modaddr, modfix, modofst, modend word deftbl, deflast word moddep, rld, esd, sym - byte refnum, defbank, str[16], filename[64] + byte refnum, defbank, filename[64], str[] byte header[128] // // Read the RELocatable module header (first 128 bytes) @@ -1209,6 +1209,8 @@ def loadmod(mod)#1 *$0042 = defaddr call($C311, 0, 0, 0, $05) // CALL XMOVE with carry set (MAIN->AUX) and ints disabled fin + else + perr = $46 fin if perr return -perr diff --git a/src/vmsrc/apple/cmdjit.pla b/src/vmsrc/apple/cmdjit.pla index 184a2c1..442bf2d 100755 --- a/src/vmsrc/apple/cmdjit.pla +++ b/src/vmsrc/apple/cmdjit.pla @@ -16,6 +16,7 @@ const reshgr1 = $0010 const reshgr2 = $0020 const resxhgr1 = $0040 const resxhgr2 = $0080 +const nojitc = $0100 // // Module don't free memory // @@ -1044,7 +1045,7 @@ def loadmod(mod)#1 word addr, defaddr, modaddr, modfix, modofst, modend word deftbl, deflast word moddep, rld, esd, sym - byte refnum[], deffirst, str[16], filename[64] + byte refnum[], deffirst, skipjit, filename[64], str[] byte header[128] // // Read the RELocatable module header (first 128 bytes) @@ -1074,11 +1075,12 @@ def loadmod(mod)#1 // // This is an EXTended RELocatable (data+bytecode) module. // - systemflags = header:4 | systemflags - defofst = header:6 - defcnt = header:8 - init = header:10 - moddep = @header.12 + systemflags = header.4 | systemflags + skipjit = header.5 & (nojitc >> 8) + defofst = header:6 + defcnt = header:8 + init = header:10 + moddep = @header.12 // // Load module dependencies. // @@ -1153,8 +1155,8 @@ def loadmod(mod)#1 // This is a bytcode def entry - add it to the def directory. // adddef(deffirst, rld=>1 + defofst, @deflast) - deffirst = 0 - rld = rld + 4 + deffirst = skipjit // Calculate JIT potential or not + rld = rld + 4 loop // // Run through the Re-Location Dictionary. @@ -1194,6 +1196,8 @@ def loadmod(mod)#1 *$003E = modaddr + modsize *$0042 = defaddr call($C311, 0, 0, 0, $05) // CALL XMOVE with carry set (MAIN->AUX) and ints disabled + else + perr = $46 fin if perr return -perr diff --git a/src/vmsrc/apple/sossys.pla b/src/vmsrc/apple/sossys.pla index 29408a7..98e60cb 100755 --- a/src/vmsrc/apple/sossys.pla +++ b/src/vmsrc/apple/sossys.pla @@ -11,6 +11,7 @@ const reshgr1 = $0010 const reshgr2 = $0020 const resxhgr1 = $0040 const resxhgr2 = $0080 +const nojitc = $0100 // // Module don't free memory // @@ -1050,7 +1051,7 @@ def loadmod(mod)#1 word addr, defaddr, modaddr, modfix, modofst, modend word deftbl, deflast, codeseg word moddep, rld, esd, sym - byte lerr, defext, fileinfo[], str[16], filename[33] + byte lerr, defext, skipjit, fileinfo[], str[16], filename[33] byte header[128] lerr = 0 // @@ -1084,7 +1085,8 @@ def loadmod(mod)#1 // // This is an EXTended RELocatable (data+bytecode) module. // - systemflags = header:4 | systemflags + systemflags = header.4 | systemflags + skipjit = header.5 & (nojitc >> 8) defofst = header:6 defcnt = header:8 init = header:10 @@ -1176,8 +1178,8 @@ def loadmod(mod)#1 // This is a bytcode def entry - add it to the def directory. // adddef(deffirst, defext, rld=>1 + defofst, @deflast) - deffirst = 0 - rld = rld + 4 + deffirst = skipjit // Calculate JIT potential or not + rld = rld + 4 loop // // Run through the Re-Location Dictionary. @@ -1241,6 +1243,8 @@ def loadmod(mod)#1 // memxcpy(codeseg, bytecode, modsize - (bytecode - modaddr)) fin + else + lerr = $46 fin if lerr return -lerr