Skip to content

Commit 243d4c9

Browse files
committed
Merge branch 'master' of jsoftware.com:jsource
2 parents a6ce7e4 + 764e81e commit 243d4c9

109 files changed

Lines changed: 30748 additions & 2447 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ release
6464
bin/
6565
!pthreads4w/bin/
6666
!pthreads4w/bin/pthreadVC3.dll
67-
make2/
67+
make2/obj/
6868
jlibrary/bin/
6969
jlibrary/bin32/
7070
jlibrary/system/
@@ -74,6 +74,9 @@ jlibrary/tools/
7474

7575
#github workflow action folders
7676
j64/
77+
tools/
78+
system/
79+
addons/
7780

7881
# addons
7982
jlibrary/addons

dllsrc/jdll.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,7 @@ CDPROC JS _stdcall JInit()
800800
jvmrelease(jt,sizeof(JST)); // if error during init, fail
801801
R 0;
802802
};
803+
jgmpinit(); // mp support for 1x and 2r3
803804
return jt; // return (JS)MTHREAD(jt);
804805
}
805806

jsrc/Android.mk

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,38 @@ LOCAL_MODULE_FILENAME := libj
66

77
# ndk r21 : OpenMP is now available as a dynamic library (and this is the new default behavior, so link with -static-openmp if you want to stick with the static runtime)
88
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
9-
LOCAL_CFLAGS := -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -DSLEEF=1 -DENABLE_ADVSIMD -DHAVE_NEON64=1 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=armv8-a+crc+crypto -Wno-sign-compare -mno-outline-atomics -DDORENAME -I../sleef/src/arch -I../sleef/src/common
9+
LOCAL_CFLAGS := -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -DSLEEF=1 -DENABLE_ADVSIMD -DHAVE_NEON64=1 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=armv8-a+crc+crypto -Wno-sign-compare -mno-outline-atomics -DDORENAME -I../sleef/src/arch -I../sleef/src/common -I../mpir/include
1010
LOCAL_ARM_NEON := true
1111
LOCAL_CFLAGS += -fopenmp
1212
LOCAL_LDFLAGS += -fopenmp -static-openmp
1313
endif
1414
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
15-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -mfloat-abi=softfp -march=armv7-a -Wno-sign-compare
15+
LOCAL_CFLAGS := -DARMEABI_V7A -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -mfloat-abi=softfp -march=armv7-a -Wno-sign-compare -I../mpir/include
1616
LOCAL_ARM_MODE := arm
1717
LOCAL_ARM_NEON := true
1818
LOCAL_CFLAGS += -fopenmp
1919
LOCAL_LDFLAGS += -fopenmp -static-openmp
2020
endif
2121
ifeq ($(TARGET_ARCH_ABI),armeabi)
22-
LOCAL_CFLAGS := -std=gnu99 -Wno-unknown-warning-option -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-overflow -Wno-string-plus-int -Wno-empty-body -Wno-int-to-pointer-cast -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -fno-strict-aliasing -mfloat-abi=softfp -march=armv5te -Wno-sign-compare
22+
LOCAL_CFLAGS := -std=gnu99 -Wno-unknown-warning-option -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-overflow -Wno-string-plus-int -Wno-empty-body -Wno-int-to-pointer-cast -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -fno-strict-aliasing -mfloat-abi=softfp -march=armv5te -Wno-sign-compare -I../mpir/include
2323
LOCAL_ARM_MODE := arm
2424
LOCAL_CFLAGS += -fopenmp
2525
LOCAL_LDFLAGS += -fopenmp
2626
endif
2727
ifeq ($(TARGET_ARCH),x86_64)
28-
LOCAL_CFLAGS := -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -DSLEEF=1 -DENABLE_SSE2 -DHAVE_SSSE3=1 -DHAVE_SSE42=1 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector -Wno-sign-compare -DDORENAME -I../sleef/src/arch -I../sleef/src/common
28+
LOCAL_CFLAGS := -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -DSLEEF=1 -DENABLE_SSE2 -DHAVE_SSSE3=1 -DHAVE_SSE42=1 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector -Wno-sign-compare -DDORENAME -I../sleef/src/arch -I../sleef/src/common -I../mpir/include
2929
LOCAL_CFLAGS += -fopenmp
3030
LOCAL_LDFLAGS += -fopenmp -static-openmp
3131
endif
3232
ifeq ($(TARGET_ARCH),x86)
33-
LOCAL_CFLAGS := -DSLEEF=1 -DENABLE_SSE2 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector -Wno-sign-compare -DDORENAME -I../sleef/src/arch -I../sleef/src/common
33+
LOCAL_CFLAGS := -DSLEEF=1 -DENABLE_SSE2 -fPIC -Os -fvisibility=hidden -fwrapv -Werror -Wno-string-plus-int -Wno-empty-body -Wno-parentheses -Wno-pointer-sign -Wno-pointer-to-int-cast -Wno-logical-op-parentheses -Wno-unused-value -Wno-null-dereference -Wno-type-limits -Wno-pass-failed -D_FORTIFY_SOURCE=2 -Werror=fortify-source -fno-strict-aliasing -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector -Wno-sign-compare -DDORENAME -I../sleef/src/arch -I../sleef/src/common -I../mpir/include
3434
LOCAL_CFLAGS += -fopenmp
3535
LOCAL_LDFLAGS += -fopenmp -static-openmp
3636
endif
3737
LOCAL_LDLIBS := -ldl -llog
3838

3939
LOCAL_SRC_FILES := a.c ab.c aes-c.c aes-arm.c aes-sse2.c af.c ai.c am.c am1.c amn.c ao.c ap.c ar.c as.c au.c c.c ca.c cc.c cd.c cf.c cg.c ch.c cip.c cl.c cp.c cpdtsp.c cpuinfo.c cr.c crs.c \
40-
ct.c cu.c cv.c cx.c d.c dc.c dss.c dstop.c dsusp.c dtoa.c f.c f2.c fbu.c gemm.c i.c io.c j.c jdlllic.c k.c m.c mbx.c mt.c p.c pv.c px.c r.c rl.c rt.c s.c sc.c sl.c \
40+
ct.c cu.c cv.c cx.c d.c dc.c dss.c dstop.c dsusp.c dtoa.c f.c f2.c fbu.c gemm.c i.c io.c j.c jdlllic.c jgmpinit.c k.c m.c mbx.c mt.c p.c pv.c px.c r.c rl.c rt.c s.c sc.c sl.c \
4141
sn.c t.c u.c v.c v0.c v1.c v2.c va1.c va1ss.c va2.c va2s.c va2ss.c vamultsp.c vb.c vbang.c vbit.c vcant.c vchar.c vcat.c vcatsp.c vcomp.c vcompsc.c vd.c vdx.c ve.c \
4242
vf.c vfft.c vfrom.c vfromsp.c vg.c vgauss.c vgcomp.c vgranking.c vgsort.c vgsp.c vi.c viavx.c viix.c visp.c vm.c vo.c vp.c vq.c vrand.c vrep.c vs.c vsb.c \
4343
vt.c vu.c vx.c vz.c w.c wc.c wn.c ws.c x.c x15.c xa.c xaes.c xb.c xc.c xcrc.c xd.c xf.c xfmt.c xh.c xi.c xl.c xo.c xs.c xsha.c xt.c xu.c crc32c.c str.c strptime.c \

jsrc/Jconsole-nopie.mk

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ LOCAL_MODULE := jconsole-nopie
88
LOCAL_LDLIBS := -ldl -llog
99

1010
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
11-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a
11+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a -I../mpir/include
1212
LOCAL_ARM_NEON := true
1313
endif
1414
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
15-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a
15+
LOCAL_CFLAGS := -DARMEABI_V7A -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a -I../mpir/include
1616
LOCAL_ARM_MODE := arm
1717
endif
1818
ifeq ($(TARGET_ARCH_ABI),armeabi)
19-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfp -march=armv5te
19+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfp -march=armv5te -I../mpir/include
2020
LOCAL_ARM_MODE := thumb
2121
endif
2222
ifeq ($(TARGET_ARCH),x86_64)
23-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector
23+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector -I../mpir/include
2424
endif
2525
ifeq ($(TARGET_ARCH),x86)
26-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector
26+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector -I../mpir/include
2727
endif
2828

2929
LOCAL_SRC_FILES := jconsole.c jeload.c linenoise.c

jsrc/Jconsole.mk

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,22 @@ LOCAL_MODULE := jconsole
88
LOCAL_LDLIBS := -ldl -llog
99

1010
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
11-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a
11+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a -I../mpir/include
1212
LOCAL_ARM_NEON := true
1313
endif
1414
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
15-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a
15+
LOCAL_CFLAGS := -DARMEABI_V7A -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a -I../mpir/include
1616
LOCAL_ARM_MODE := arm
1717
endif
1818
ifeq ($(TARGET_ARCH_ABI),armeabi)
19-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfp -march=armv5te
19+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -mfloat-abi=softfp -mfpu=vfp -march=armv5te -I../mpir/include
2020
LOCAL_ARM_MODE := thumb
2121
endif
2222
ifeq ($(TARGET_ARCH),x86_64)
23-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector
23+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector -I../mpir/include
2424
endif
2525
ifeq ($(TARGET_ARCH),x86)
26-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector
26+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DREADLINE -DUSE_LINENOISE -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector -I../mpir/include
2727
endif
2828

2929
LOCAL_CFLAGS += -fPIE

jsrc/Jnative.mk

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,22 @@ LOCAL_MODULE_FILENAME := libjnative
99
LOCAL_LDLIBS :=
1010

1111
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
12-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a
12+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=armv8-a -I../mpir/include
1313
LOCAL_ARM_NEON := true
1414
endif
1515
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
16-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a
16+
LOCAL_CFLAGS := -DARMEABI_V7A -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -mfloat-abi=softfp -mfpu=vfpv3-d16 -march=armv7-a -I../mpir/include
1717
LOCAL_ARM_MODE := arm
1818
endif
1919
ifeq ($(TARGET_ARCH_ABI),armeabi)
20-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -mfloat-abi=softfp -march=armv5te
20+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -mfloat-abi=softfp -march=armv5te -I../mpir/include
2121
LOCAL_ARM_MODE := thumb
2222
endif
2323
ifeq ($(TARGET_ARCH),x86_64)
24-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector
24+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -DC_CRC32C=1 -DEMU_AVX=1 -DPYXES=1 -march=x86-64 -msse4.2 -mpopcnt -fno-stack-protector -I../mpir/include
2525
endif
2626
ifeq ($(TARGET_ARCH),x86)
27-
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector
27+
LOCAL_CFLAGS := -fPIC -Os -fvisibility=hidden -fwrapv -Werror -fno-strict-aliasing -march=i686 -mssse3 -mfpmath=sse -fno-stack-protector -I../mpir/include
2828
endif
2929

3030
LOCAL_SRC_FILES := andjnative.c jeload.c

jsrc/ao.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ static DF1(jtobqfslash){A y,z;B b=0,p;C er,id,*wv;I c,d,k,m,m1,n,n1,r,*s,wt;
7070
case OBQCASE(XNUMX,CMAX ): OBQLOOP(X,X,wt,x=*u, x=1==xcompare(x,*u)? x:*u); break;
7171
case OBQCASE(XNUMX,CMIN ): OBQLOOP(X,X,wt,x=*u, x=1==xcompare(x,*u)?*u: x); break;
7272
case OBQCASE(XNUMX,CPLUS ): OBQLOOP(X,X,wt,x=*u, x=xplus(x,*u)); break;
73-
case OBQCASE(RATX, CMAX ): OBQLOOP(Q,Q,wt,x=*u, x=1==QCOMP(x,*u)? x:*u); break;
74-
case OBQCASE(RATX, CMIN ): OBQLOOP(Q,Q,wt,x=*u, x=1==QCOMP(x,*u)?*u: x); break;
73+
case OBQCASE(RATX, CMAX ): OBQLOOP(Q,Q,wt,x=*u, x=0<QCOMP(x,*u)? x:*u); break;
74+
case OBQCASE(RATX, CMIN ): OBQLOOP(Q,Q,wt,x=*u, x=0<QCOMP(x,*u)?*u: x); break;
7575
case OBQCASE(RATX, CPLUS ): OBQLOOP(Q,Q,wt,x=*u, x=qplus(x,*u)); break;
7676
case OBQCASE(INTX, CBW0001 ): OBQLOOP(I,I,wt,x=*u, x&=*u ); break;
7777
case OBQCASE(INTX, CBW0110 ): OBQLOOP(I,I,wt,x=*u, x^=*u ); break;

jsrc/au.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
#include "j.h"
77

8-
98
static I jtfdepger(J jt,A w){R 0;
109
}
1110

jsrc/ca.c

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,18 @@ static DF2(jtuponf2){PROLOG(0022);DECLFG;A z;I flag=sv->flag,m=jt->xmode;
2929
static X jtxmodpow(J jt,A a,A w,A h){A ox,z;
3030
if(!(XNUM&AT(a)))RZ(a=cvt(XNUM,a));
3131
if(!(XNUM&AT(w)))RZ(w=cvt(XNUM,w));
32-
if(!(XNUM&AT(h)))RZ(h=cvt(XNUM,h));
33-
ox=jt->xmod; jt->xmod=h;
34-
GAT0(z,XNUM,1,0); XAV(z)[0]=xpow(XAV(a)[0],XAV(w)[0]);
35-
jt->xmod=ox;
36-
RNE(z);
32+
if (XNUM==AT(h)) { // special case
33+
ox=jt->xmod; jt->xmod=h;
34+
GAT0(z,XNUM,1,0); XAV(z)[0]=xpowmodinv(XAV(a)[0],XAV(w)[0]);
35+
jt->xmod=ox;
36+
RNE(z);
37+
} else {
38+
if(!(XNUM&AT(h)))RZ(h=cvt(XNUM,h));
39+
ox=jt->xmod; jt->xmod=h;
40+
GAT0(z,XNUM,1,0); XAV(z)[0]=xpow(XAV(a)[0],XAV(w)[0]);
41+
jt->xmod=ox;
42+
RNE(z);
43+
}
3744
}
3845

3946
#define DMOD 46340 /* <. %: _1+2^31 */
@@ -156,6 +163,9 @@ DF2(atcomp){A z;AF f;
156163
F2(jtatop){F2PREFIP;A f,g,h=0,x;AF f1=on1,f2=jtupon2;B b=0,j;C c,d,e;I flag, flag2=0,m=-1;V*av,*wv;
157164
ASSERTVVn(a,w);
158165
av=FAV(a); c=av->id;
166+
if (av->fgh[0]) {
167+
A f= av->fgh[0];
168+
}
159169
if(unlikely((AT(w)&NOUN)!=0)){ // u@n
160170
if(c==CEXEC){ // ".@n
161171
// See if the argument is a string containing a single name. If so, pass the name into the verb.
@@ -208,7 +218,8 @@ F2(jtatop){F2PREFIP;A f,g,h=0,x;AF f1=on1,f2=jtupon2;B b=0,j;C c,d,e;I flag, fla
208218
case CQQ: if(d==CTHORN&&CEXEC==ID(av->fgh[0])&&av->fgh[1]==num(0)){f1=jtdigits10; flag&=~VJTFLGOK1;} break; // "."0@":
209219
case CEXP: if(d==CCIRCLE){f1=jtexppi; flag&=~VJTFLGOK1;} break;
210220
case CAMP:
211-
x=av->fgh[0]; if(RAT&AT(x))RZ(x=pcvt(XNUM,x));
221+
x=av->fgh[0];
222+
if(RAT&AT(x))RZ(x=pcvt(XNUM,x));
212223
if((d==CEXP||d==CAMP&&CEXP==ID(wv->fgh[1]))&&AT(x)&INT+XNUM&&!AR(x)&&CSTILE==ID(av->fgh[1])){
213224
h=x; flag+=VMOD;
214225
if(d==CEXP){f2=jtmodpow2; flag&=~VJTFLGOK2;} else{f1=jtmodpow1; flag&=~VJTFLGOK1;}
@@ -245,7 +256,6 @@ F2(jtatop){F2PREFIP;A f,g,h=0,x;AF f1=on1,f2=jtupon2;B b=0,j;C c,d,e;I flag, fla
245256
// If the compound has rank 0, switch to the loop for that; if rank is infinite, avoid the loop; if v is atomic, switch to the loop that gives a msg if executed on non-atom
246257
if(likely(f1==on1)){flag2|=VF2RANKATOP1; f1=wv->mr==0?jton10:f1; f1=wv->flag&VISATOMIC1?jton10atom:f1; f1=wv->mr==RMAX?on1cell:f1;}
247258
if(likely(f2==jtupon2)){flag2|=VF2RANKATOP2; f2=wv->lrr==0?jtupon20:f2; f2=wv->flag&VISATOMIC2?jtupon20atom:f2; f2=wv->lrr==(UI)R2MAX?jtupon2cell:f2;}
248-
249259
A z=fdef(flag2,CAT,VERB, f1,f2, a,w,h, flag, (I)wv->mr,(I)lrv(wv),rrv(wv));
250260
RZ(z); FAV(z)->localuse.lu1.cct=cct; R z;
251261
}

jsrc/cx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ DF2(jtxdefn){
495495
if(likely(AT(tt)&INT+B01)){i=BIV0(tt)?i:nexti; break;} // INT and B01 are most common
496496
if(AT(tt)&FL){i=DAV(tt)[0]?i:nexti; break;}
497497
if(AT(tt)&CMPX){i=DAV(tt)[0]||DAV(tt)[1]?i:nexti; break;}
498-
if(AT(tt)&(RAT|XNUM)){i=1<AN(XAV(tt)[0])||IAV(XAV(tt)[0])[0]?i:nexti; break;}
498+
if(AT(tt)&(RAT|XNUM)){i=!ISX0(XAV(tt)[0])?i:nexti; break;}
499499
if(!(AT(tt)&NOUN)){CHECKNOUN} // will take error
500500
// other nonnumeric types (BOX, char) test true: i is set for that
501501
if(!ISSPARSE(AT(tt)))break;

0 commit comments

Comments
 (0)