import of spidermonkey 1.5

SpiderMonkey is the code-name for Mozilla's C implementation of
JavaScript.

from Antoine Jacoutot <ajacoutot at lphp.org>

with some patches from FreeBSD.
This commit is contained in:
steven 2006-10-01 23:02:12 +00:00
parent 05a117853f
commit e27d0d118d
18 changed files with 411 additions and 0 deletions

View File

@ -0,0 +1,50 @@
# $OpenBSD: Makefile,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
SHARED_ONLY= Yes
COMMENT= "Mozilla's C implementation of JavaScript"
V= 1.5
DISTNAME= js-${V}
PKGNAME= spidermonkey-${V}
SHARED_LIBS= js 1.0
CATEGORIES= lang
HOMEPAGE= http://www.mozilla.org/js/spidermonkey/
MAINTAINER= Antoine Jacoutot <ajacoutot@lphp.org>
# Mozilla Public License
PERMIT_PACKAGE_CDROM= Yes
PERMIT_PACKAGE_FTP= Yes
PERMIT_DISTFILES_CDROM= Yes
PERMIT_DISTFILES_FTP= Yes
MASTER_SITES= http://ftp.mozilla.org/pub/mozilla.org/js/ \
http://ftp.mozilla.org/pub/mozilla.org/js/older-packages/
WANTLIB= c m pthread readline termcap
WRKDIST= ${WRKDIR}/js
WRKSRC= ${WRKDIST}/src
MAKE_FILE= Makefile.ref
MAKE_FLAGS= SO_SUFFIX=so.${LIBjs_VERSION}
CFLAGS+= -pthread
USE_GMAKE= Yes
NO_REGRESS= Yes
HEADERS= jsapi.h jscompat.h jslong.h jsosdep.h jsotypes.h \
jspubtd.h jstypes.h jsstr.h jshash.h jsprvtd.h \
Linux_All_DBG.OBJ/jsautocfg.h
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/Linux_All_DBG.OBJ/js ${PREFIX}/bin
${INSTALL_DATA} ${WRKSRC}/Linux_All_DBG.OBJ/libjs.so.${LIBjs_VERSION} ${PREFIX}/lib
${INSTALL_DATA_DIR} ${PREFIX}/include/js
.for i in ${HEADERS}
${INSTALL_DATA} ${WRKSRC}/${i} ${PREFIX}/include/js
.endfor
.include <bsd.port.mk>

View File

@ -0,0 +1,4 @@
MD5 (js-1.5.tar.gz) = 863bb6462f4ce535399a7c6276ae6776
RMD160 (js-1.5.tar.gz) = a1f23d53c259a9fa354f29eecdc1c56472f4f626
SHA1 (js-1.5.tar.gz) = 707755be3a94207d5d10ccd1011ca00babe0a689
SIZE (js-1.5.tar.gz) = 958135

View File

@ -0,0 +1,36 @@
$OpenBSD: patch-src_Makefile_ref,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/Makefile.ref.orig Sat Nov 15 01:10:55 2003
+++ src/Makefile.ref Sun Oct 1 17:59:45 2006
@@ -55,8 +55,6 @@ include config.mk
ifdef USE_MSVC
OTHER_LIBS += fdlibm/$(OBJDIR)/fdlibm.lib
-else
-OTHER_LIBS += -Lfdlibm/$(OBJDIR) -lfdm
endif
ifdef JS_THREADSAFE
@@ -241,12 +239,8 @@ JS_CFILES = \
prmjtime.c \
$(NULL)
-PREDIRS += fdlibm
-
ifdef USE_MSVC
FDLIBM_LIBRARY = fdlibm/$(OBJDIR)/fdlibm.lib
-else
-FDLIBM_LIBRARY = fdlibm/$(OBJDIR)/libfdm.a
endif
JSMATH_PRELINK = $(OBJDIR)/jsmathtemp.o
# Flag for incremental linking
@@ -300,8 +294,8 @@ ifdef USE_MSVC
$(PROGRAM): $(PROG_OBJS) $(LIBRARY) $(FDLIBM_LIBRARY)
link.exe -out:"$@" $(EXE_LINK_FLAGS) $^
else
-$(PROGRAM): $(PROG_OBJS) $(LIBRARY) $(FDLIBM_LIBRARY)
- $(CC) -o $@ $(CFLAGS) $(PROG_OBJS) $(LIBRARY) $(LDFLAGS) $(OTHER_LIBS) \
+$(PROGRAM): $(PROG_OBJS) $(SHARED_LIBRARY) $(FDLIBM_LIBRARY)
+ $(CC) -o $@ $(CFLAGS) $(PROG_OBJS) -L$(OBJDIR) -ljs $(LDFLAGS) $(OTHER_LIBS) \
$(PROG_LIBS)
endif

View File

@ -0,0 +1,50 @@
$OpenBSD: patch-src_config_Linux_All_mk,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/config/Linux_All.mk.orig Tue May 10 21:53:44 2005
+++ src/config/Linux_All.mk Sun Oct 1 17:59:02 2006
@@ -41,13 +41,13 @@
# Config for all versions of Linux
#
-CC = gcc
-CCC = g++
+#CC = gcc
+#CCC = g++
CFLAGS += -Wall -Wno-format
OS_CFLAGS = -DXP_UNIX -DSVR4 -DSYSV -D_BSD_SOURCE -DPOSIX_SOURCE -DHAVE_LOCALTIME_R
RANLIB = echo
-MKSHLIB = $(LD) -shared $(XMKSHLIBOPTS)
+MKSHLIB = $(CC) -shared $(XMKSHLIBOPTS)
#.c.o:
# $(CC) -c -MD $*.d $(CFLAGS) $<
@@ -74,7 +74,7 @@ endif
GFX_ARCH = x
-OS_LIBS = -lm -lc
+OS_LIBS = -lm
ASFLAGS += -x assembler-with-cpp
@@ -88,16 +88,12 @@ OS_CFLAGS += -mieee
endif
# Use the editline library to provide line-editing support.
-JS_EDITLINE = 1
+JS_READLINE = 1
-ifeq ($(CPU_ARCH),x86_64)
-# Use VA_COPY() standard macro on x86-64
-# FIXME: better use it everywhere
OS_CFLAGS += -DHAVE_VA_COPY -DVA_COPY=va_copy
-endif
-ifeq ($(CPU_ARCH),x86_64)
-# We need PIC code for shared libraries
-# FIXME: better patch rules.mk & fdlibm/Makefile*
+ifeq ($(CPU_ARCH),sparc64)
OS_CFLAGS += -DPIC -fPIC
+else
+OS_CFLAGS += -DPIC -fpic
endif

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-src_config_mk,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/config.mk.orig Sat Nov 15 01:10:55 2003
+++ src/config.mk Mon Sep 25 16:40:30 2006
@@ -90,6 +90,9 @@ endif
ifeq ($(OS_ARCH),Linux)
OS_CONFIG := Linux_All
else
+ifeq ($(OS_ARCH), OpenBSD)
+OS_CONFIG := Linux_All
+else
ifeq ($(OS_ARCH),dgux)
OS_CONFIG := dgux
else
@@ -100,6 +103,7 @@ OS_CONFIG := $(OS_ARCH)$(OS_OBJTYP
endif
endif
endif
+endif
ASFLAGS =
DEFINES =
@@ -122,7 +126,7 @@ OPTIMIZER = -Zi
else
OPTIMIZER = -g
endif
-DEFINES += -DDEBUG -DDEBUG_$(shell whoami)
+DEFINES += -DDEBUG
OBJDIR_TAG = _DBG
endif

View File

@ -0,0 +1,30 @@
$OpenBSD: patch-src_js_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/js.c.orig Wed Jun 16 23:15:35 2004
+++ src/js.c Mon Oct 2 00:43:51 2006
@@ -921,7 +921,7 @@ SrcNotes(JSContext *cx, JSScript *script
for (sn = notes; !SN_IS_TERMINATOR(sn); sn = SN_NEXT(sn)) {
delta = SN_DELTA(sn);
offset += delta;
- fprintf(gOutFile, "%3u: %5u [%4u] %-8s",
+ fprintf(gOutFile, "%3tu: %5u [%4u] %-8s",
PTRDIFF(sn, notes, jssrcnote), offset, delta,
js_SrcNoteSpec[SN_TYPE(sn)].name);
type = (JSSrcNoteType) SN_TYPE(sn);
@@ -1006,7 +1006,7 @@ TryNotes(JSContext *cx, JSScript *script
return JS_TRUE;
fprintf(gOutFile, "\nException table:\nstart\tend\tcatch\n");
while (tn->start && tn->catchStart) {
- fprintf(gOutFile, " %d\t%d\t%d\n",
+ fprintf(gOutFile, " %td\t%td\t%td\n",
tn->start, tn->start + tn->length, tn->catchStart);
tn++;
}
@@ -1222,7 +1222,7 @@ DumpScope(JSContext *cx, JSObject *obj,
DUMP_ATTR(SETTER);
#undef DUMP_ATTR
- fprintf(fp, " slot %lu flags %x shortid %d\n",
+ fprintf(fp, " slot %u flags %x shortid %d\n",
sprop->slot, sprop->flags, sprop->shortid);
}
}

View File

@ -0,0 +1,41 @@
$OpenBSD: patch-src_jsapi_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jsapi.c.orig Sat Oct 22 12:19:14 2005
+++ src/jsapi.c Mon Sep 25 16:40:30 2006
@@ -125,7 +125,7 @@ JS_GetEmptyStringValue(JSContext *cx)
static JSBool
TryArgumentFormatter(JSContext *cx, const char **formatp, JSBool fromJS,
- jsval **vpp, va_list *app)
+ jsval **vpp, va_list app)
{
const char *format;
JSArgumentFormatMap *map;
@@ -263,8 +263,7 @@ JS_ConvertArgumentsVA(JSContext *cx, uin
break;
default:
format--;
- if (!TryArgumentFormatter(cx, &format, JS_TRUE, &sp,
- JS_ADDRESSOF_VA_LIST(ap))) {
+ if (!TryArgumentFormatter(cx, &format, JS_TRUE, &sp, ap)) {
return JS_FALSE;
}
/* NB: the formatter already updated sp, so we continue here. */
@@ -366,8 +365,7 @@ JS_PushArgumentsVA(JSContext *cx, void *
break;
default:
format--;
- if (!TryArgumentFormatter(cx, &format, JS_FALSE, &sp,
- JS_ADDRESSOF_VA_LIST(ap))) {
+ if (!TryArgumentFormatter(cx, &format, JS_FALSE, &sp, ap)) {
goto bad;
}
/* NB: the formatter already updated sp, so we continue here. */
@@ -2211,7 +2209,7 @@ DefineProperty(JSContext *cx, JSObject *
JSAtom *atom;
if (attrs & JSPROP_INDEX) {
- id = INT_TO_JSVAL((jsint)name);
+ id = INT_TO_JSVAL(name);
atom = NULL;
attrs &= ~JSPROP_INDEX;
} else {

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_jscntxt_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jscntxt.c.orig Thu Aug 19 19:57:36 2004
+++ src/jscntxt.c Mon Sep 25 16:40:30 2006
@@ -334,7 +334,7 @@ resolving_HashKey(JSDHashTable *table, c
{
const JSResolvingKey *key = (const JSResolvingKey *)ptr;
- return ((JSDHashNumber)key->obj >> JSVAL_TAGBITS) ^ key->id;
+ return ((JSDHashNumber)JS_PTR_TO_UINT32(key->obj) >> JSVAL_TAGBITS) ^ key->id;
}
JS_PUBLIC_API(JSBool)

View File

@ -0,0 +1,13 @@
$OpenBSD: patch-src_jslock_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jslock.c.orig Sun Apr 4 00:21:03 2004
+++ src/jslock.c Mon Sep 25 16:40:31 2006
@@ -193,7 +193,9 @@ js_FinishLock(JSThinLock *tl)
#endif
}
+#ifndef NSPR_LOCK
static void js_Dequeue(JSThinLock *);
+#endif
#ifdef DEBUG_SCOPE_COUNT

View File

@ -0,0 +1,43 @@
$OpenBSD: patch-src_jsopcode_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jsopcode.c.orig Sun Aug 29 20:00:24 2004
+++ src/jsopcode.c Mon Sep 25 16:40:31 2006
@@ -181,7 +181,7 @@ js_Disassemble1(JSContext *cx, JSScript
case JOF_JUMP:
case JOF_JUMPX:
off = GetJumpOffset(pc, pc);
- fprintf(fp, " %u (%d)", loc + off, off);
+ fprintf(fp, " %tu (%td)", loc + off, off);
break;
case JOF_CONST:
@@ -216,10 +216,10 @@ js_Disassemble1(JSContext *cx, JSScript
pc2 += JUMP_OFFSET_LEN;
high = GET_JUMP_OFFSET(pc2);
pc2 += JUMP_OFFSET_LEN;
- fprintf(fp, " defaultOffset %d low %d high %d", off, low, high);
+ fprintf(fp, " defaultOffset %td low %d high %d", off, low, high);
for (i = low; i <= high; i++) {
off = GetJumpOffset(pc, pc2);
- fprintf(fp, "\n\t%d: %d", i, off);
+ fprintf(fp, "\n\t%d: %td", i, off);
pc2 += jmplen;
}
len = 1 + pc2 - pc;
@@ -239,7 +239,7 @@ js_Disassemble1(JSContext *cx, JSScript
pc2 += jmplen;
npairs = GET_ATOM_INDEX(pc2);
pc2 += ATOM_INDEX_LEN;
- fprintf(fp, " offset %d npairs %u", off, (uintN) npairs);
+ fprintf(fp, " offset %td npairs %u", off, (uintN) npairs);
while (npairs) {
atom = GET_ATOM(cx, script, pc2);
pc2 += ATOM_INDEX_LEN;
@@ -253,7 +253,7 @@ js_Disassemble1(JSContext *cx, JSScript
JSSTRING_LENGTH(str));
if (!cstr)
return 0;
- fprintf(fp, "\n\t%s: %d", cstr, off);
+ fprintf(fp, "\n\t%s: %td", cstr, off);
JS_free(cx, cstr);
npairs--;
}

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_jsosdep_h,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jsosdep.h.orig Sat Nov 15 01:10:59 2003
+++ src/jsosdep.h Tue Sep 26 19:56:47 2006
@@ -101,7 +101,7 @@ JS_END_EXTERN_C
#elif defined(SOLARIS)
#define JS_HAVE_LONG_LONG
-#elif defined(FREEBSD)
+#elif defined(FREEBSD) || defined(__OpenBSD__)
#define JS_HAVE_LONG_LONG
#elif defined(SUNOS4)

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_jsprf_c,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jsprf.c.orig Fri Sep 24 05:31:15 2004
+++ src/jsprf.c Mon Sep 25 16:40:31 2006
@@ -55,7 +55,7 @@
** and requires array notation.
*/
#ifdef HAVE_VA_COPY
-#define VARARGS_ASSIGN(foo, bar) VA_COPY(foo,bar)
+#define VARARGS_ASSIGN(foo, bar) va_copy(foo,bar)
#elif defined(HAVE_VA_LIST_AS_ARRAY)
#define VARARGS_ASSIGN(foo, bar) foo[0] = bar[0]
#else

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_jspubtd_h,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jspubtd.h.orig Mon Oct 2 00:23:22 2006
+++ src/jspubtd.h Mon Oct 2 00:23:32 2006
@@ -531,7 +531,7 @@ typedef const JSErrorFormatString *
typedef JSBool
(* JS_DLL_CALLBACK JSArgumentFormatter)(JSContext *cx, const char *format,
JSBool fromJS, jsval **vpp,
- va_list *app);
+ va_list app);
#endif
typedef JSBool

View File

@ -0,0 +1,35 @@
$OpenBSD: patch-src_jstypes_h,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/jstypes.h.orig Sat Nov 15 01:11:04 2003
+++ src/jstypes.h Mon Sep 25 16:40:31 2006
@@ -203,6 +203,19 @@
#define JS_BITMASK(n) (JS_BIT(n) - 1)
/***********************************************************************
+** MACROS: JS_PTR_TO_INT32
+** JS_PTR_TO_UINT32
+** JS_INT32_TO_PTR
+** JS_UINT32_TO_PTR
+** DESCRIPTION:
+** Integer to pointer and pointer to integer conversion macros.
+***********************************************************************/
+#define JS_PTR_TO_INT32(x) ((jsint)((char *)(x) - (char *)0))
+#define JS_PTR_TO_UINT32(x) ((jsuint)((char *)(x) - (char *)0))
+#define JS_INT32_TO_PTR(x) ((void *)((char *)0 + (jsint)(x)))
+#define JS_UINT32_TO_PTR(x) ((void *)((char *)0 + (jsuint)(x)))
+
+/***********************************************************************
** MACROS: JS_HOWMANY
** JS_ROUNDUP
** JS_MIN
@@ -377,8 +390,9 @@ typedef JSUint8 JSPackedBool;
/*
** A JSWord is an integer that is the same size as a void*
*/
-typedef long JSWord;
-typedef unsigned long JSUword;
+#include <inttypes.h>
+typedef intptr_t JSWord;
+typedef uintptr_t JSUword;
#include "jsotypes.h"

View File

@ -0,0 +1,12 @@
$OpenBSD: patch-src_rules_mk,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
--- src/rules.mk.orig Sun Oct 1 17:58:25 2006
+++ src/rules.mk Sun Oct 1 17:58:50 2006
@@ -58,7 +58,7 @@ ifdef USE_MSVC
# TARGETS = $(LIBRARY) # $(PROGRAM) not supported for MSVC yet
TARGETS += $(SHARED_LIBRARY) $(PROGRAM) # it is now
else
-TARGETS += $(LIBRARY) $(SHARED_LIBRARY) $(PROGRAM)
+TARGETS += $(SHARED_LIBRARY) $(PROGRAM)
endif
all:

View File

@ -0,0 +1,2 @@
SpiderMonkey is the code-name for the Mozilla's C implementation of
JavaScript.

View File

@ -0,0 +1,2 @@
@comment $OpenBSD: PFRAG.shared,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
@lib lib/libjs.so.${LIBjs_VERSION}

View File

@ -0,0 +1,15 @@
@comment $OpenBSD: PLIST,v 1.1.1.1 2006/10/01 23:02:12 steven Exp $
%%SHARED%%
bin/js
include/js/
include/js/jsapi.h
include/js/jsautocfg.h
include/js/jscompat.h
include/js/jshash.h
include/js/jslong.h
include/js/jsosdep.h
include/js/jsotypes.h
include/js/jsprvtd.h
include/js/jspubtd.h
include/js/jsstr.h
include/js/jstypes.h