Permalink
Browse files

Import pristine Tracemonkey from Firefox 3.7a3

  • Loading branch information...
0 parents commit a821f8a4287dcb36b8029c83fc47fa6f65035d60 @dustin dustin committed Feb 18, 2011
Showing 4,742 changed files with 803,746 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.

Large diffs are not rendered by default.

Oops, something went wrong.

Large diffs are not rendered by default.

Oops, something went wrong.
@@ -0,0 +1,54 @@
+<!-- ***** BEGIN LICENSE BLOCK *****
+ - Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ -
+ - The contents of this file are subject to the Mozilla Public License Version
+ - 1.1 (the "License"); you may not use this file except in compliance with
+ - the License. You may obtain a copy of the License at
+ - http://www.mozilla.org/MPL/
+ -
+ - Software distributed under the License is distributed on an "AS IS" basis,
+ - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ - for the specific language governing rights and limitations under the
+ - License.
+ -
+ - The Original Code is Mozilla Communicator client code, released
+ - March 31, 1998.
+ -
+ - The Initial Developer of the Original Code is
+ - Netscape Communications Corporation.
+ - Portions created by the Initial Developer are Copyright (C) 1998-1999
+ - the Initial Developer. All Rights Reserved.
+ -
+ - Contributor(s):
+ -
+ - Alternatively, the contents of this file may be used under the terms of
+ - either of the GNU General Public License Version 2 or later (the "GPL"),
+ - or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ - in which case the provisions of the GPL or the LGPL are applicable instead
+ - of those above. If you wish to allow use of your version of this file only
+ - under the terms of either the GPL or the LGPL, and not to allow others to
+ - use your version of this file under the terms of the MPL, indicate your
+ - decision by deleting the provisions above and replace them with the notice
+ - and other provisions required by the GPL or the LGPL. If you do not delete
+ - the provisions above, a recipient may use your version of this file under
+ - the terms of any one of the MPL, the GPL or the LGPL.
+ -
+ - ***** END LICENSE BLOCK ***** -->
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <meta http-equiv="Refresh"
+ content="0;URL=http://developer.mozilla.org/en/docs/SpiderMonkey">
+ <title>SpiderMonkey README</title>
+</head>
+<body>
+
+<h1>SpiderMonkey README</h1>
+
+<p>See the
+<a href="http://developer.mozilla.org/en/docs/SpiderMonkey">SpiderMonkey
+pages</a> on the Mozilla Developer Center</a>.
+
+</body>
+</html>
@@ -0,0 +1,3 @@
+mozilla/js/src/*
+mozilla/js/src/config/*
+mozilla/js/src/macbuild/*
19 Y.js
@@ -0,0 +1,19 @@
+// The Y combinator, applied to the factorial function
+
+function factorial(proc) {
+ return function (n) {
+ return (n <= 1) ? 1 : n * proc(n-1);
+ }
+}
+
+function Y(outer) {
+ function inner(proc) {
+ function apply(arg) {
+ return proc(proc)(arg);
+ }
+ return outer(apply);
+ }
+ return inner(inner);
+}
+
+print("5! is " + Y(factorial)(5));
@@ -0,0 +1,13 @@
+dnl
+dnl Local autoconf macros used with mozilla
+dnl The contents of this file are under the Public Domain.
+dnl
+
+builtin(include, build/autoconf/pkg.m4)dnl
+builtin(include, build/autoconf/nspr.m4)dnl
+builtin(include, build/autoconf/altoptions.m4)dnl
+builtin(include, build/autoconf/moznbytetype.m4)dnl
+builtin(include, build/autoconf/mozprog.m4)dnl
+builtin(include, build/autoconf/acwinpaths.m4)dnl
+
+MOZ_PROG_CHECKMSYS()
@@ -0,0 +1,110 @@
+# ***** BEGIN LICENSE BLOCK *****
+# Version: MPL 1.1/GPL 2.0/LGPL 2.1
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+# http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# The Original Code is Mozilla 2.
+#
+# The Initial Developer of the Original Code is
+# the Mozilla Foundation <http://www.mozilla.org>.
+#
+# Portions created by the Initial Developer are Copyright (C) 2008
+# the Initial Developer. All Rights Reserved.
+#
+# Contributor(s):
+# Benjamin Smedberg <benjamin@smedbergs.us> (Author)
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 2 or later (the "GPL"), or
+# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+# in which case the provisions of the GPL or the LGPL are applicable instead
+# of those above. If you wish to allow use of your version of this file only
+# under the terms of either the GPL or the LGPL, and not to allow others to
+# use your version of this file under the terms of the MPL, indicate your
+# decision by deleting the provisions above and replace them with the notice
+# and other provisions required by the GPL or the LGPL. If you do not delete
+# the provisions above, a recipient may use your version of this file under
+# the terms of any one of the MPL, the GPL or the LGPL.
+#
+# ***** END LICENSE BLOCK *****
+
+DEPTH = ..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+# we will do compilations that create dependency files.
+NEED_MDDEPDIR = 1
+
+include $(DEPTH)/config/autoconf.mk
+
+REDGREEN_FAILURE_TESTCASES = \
+ green-callred.cpp \
+ green-accessred.cpp \
+ green-tored-badpath.cpp \
+ misdeclared-red-funcptr.cpp \
+ misdeclared-red-funcptr2.cpp \
+ red-togreenptr.cpp \
+ red-togreenptr-return.cpp \
+ red-togreenptr-arg.cpp \
+ red-togreenptr-field.cpp \
+ red-togreenptr-initializer.cpp \
+ red-togreenptr-initializer-struct.cpp \
+ red-togreenptr-initializer-array.cpp \
+ red-togreenptr-initializer-nested.cpp \
+ red-togreenptr-initializer-cast.cpp \
+ green-callredptr.cpp \
+ $(NULL)
+
+REDGREEN_SUCCESS_TESTCASES = \
+ red-callred.cpp \
+ red-callgreen.cpp \
+ red-accessred.cpp \
+ green-tored.cpp \
+ green-toredptr.cpp \
+ $(NULL)
+
+STATIC_FAILURE_TESTCASES = \
+ $(REDGREEN_FAILURE_TESTCASES) \
+ $(NULL)
+
+STATIC_PASS_TESTCASES = \
+ $(REDGREEN_SUCCESS_TESTCASES) \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+
+LOCAL_INCLUDES += -I$(srcdir)/.. -I..
+
+check:: \
+ $(STATIC_FAILURE_TESTCASES:.cpp=.s-fail) \
+ $(STATIC_PASS_TESTCASES:.cpp=.s-pass) \
+ $(NULL)
+
+# We want to compile each file and invert the result to ensure that
+# compilation failed.
+%.s-fail: %.cpp $(GLOBAL_DEPS) $(DEHYDRA_SCRIPTS)
+ @printf "Compiling $(<F) to check that the static-analysis script is checking properly..."
+ @if $(CCC) $(OUTOPTION)/dev/null -S $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) >$(*F).errlog 2>&1; then \
+ printf "fail:\nerror: compilation of $(<F) succeeded. It shouldn't have!\n"; \
+ exit 1; \
+ else \
+ printf "ok.\n"; \
+ fi
+
+%.s-pass: %.cpp $(GLOBAL_DEPS) $(DEHYDRA_SCRIPTS)
+ @printf "Compiling $(<F) to check that the static-analysis script is checking properly..."
+ @if $(CCC) -Werror $(OUTOPTION)/dev/null -S $(COMPILE_CXXFLAGS) $(_VPATH_SRCS) >$(*F).errlog 2>&1; then \
+ printf "ok.\n"; \
+ else \
+ printf "fail:\nerror: compilation of $(<F) failed. It shouldn't have!\n"; \
+ exit 1; \
+ fi
@@ -0,0 +1,11 @@
+#include "jstypes.h"
+
+struct Foo
+{
+ JS_REQUIRES_STACK void *redmember;
+};
+
+void* GreenFunc(Foo *f)
+{
+ return f->redmember;
+}
@@ -0,0 +1,12 @@
+#include "jstypes.h"
+
+#ifndef NS_STATIC_CHECKING
+#error Running this without NS_STATIC_CHECKING is silly
+#endif
+
+JS_REQUIRES_STACK void RedFunc();
+
+void GreenFunc()
+{
+ RedFunc();
+}
@@ -0,0 +1,8 @@
+#include "jstypes.h"
+
+typedef void (JS_REQUIRES_STACK *RedFuncPtr)();
+
+void GreenFunc(RedFuncPtr f)
+{
+ f();
+}
@@ -0,0 +1,14 @@
+#include "jstypes.h"
+
+JS_REQUIRES_STACK void RedFunc();
+
+JS_FORCES_STACK void TurnRedFunc();
+
+void GreenPartlyRedFunc(int i)
+{
+ if (i) {
+ TurnRedFunc();
+ }
+
+ RedFunc();
+}
@@ -0,0 +1,12 @@
+#include "jstypes.h"
+
+JS_REQUIRES_STACK void RedFunc();
+
+JS_FORCES_STACK void TurnRedFunc();
+
+void GreenToRedFunc()
+{
+ TurnRedFunc();
+
+ RedFunc();
+}
@@ -0,0 +1,12 @@
+#include "jstypes.h"
+
+void GreenFunc();
+
+typedef void (JS_REQUIRES_STACK *RedFuncPtr)();
+
+RedFuncPtr Test()
+{
+ // assigning a green function to a red function pointer is ok
+ RedFuncPtr p = GreenFunc;
+ return p;
+}
@@ -0,0 +1,5 @@
+#include "jstypes.h"
+
+
+// JS_REQUIRES_STACK should come before the *
+typedef void (* JS_REQUIRES_STACK RedFuncPtr)();
@@ -0,0 +1,5 @@
+#include "jstypes.h"
+
+
+// JS_REQUIRES_STACK should come before the *
+typedef void (* RedFuncPtr)() JS_REQUIRES_STACK;
@@ -0,0 +1,11 @@
+#include "jstypes.h"
+
+struct Foo
+{
+ JS_REQUIRES_STACK void *redmember;
+};
+
+JS_REQUIRES_STACK void * RedFunc(Foo *f)
+{
+ return f->redmember;
+}
@@ -0,0 +1,8 @@
+#include "jstypes.h"
+
+void GreenFunc();
+
+void JS_REQUIRES_STACK RedFunc()
+{
+ GreenFunc();
+}
@@ -0,0 +1,8 @@
+#include "jstypes.h"
+
+JS_REQUIRES_STACK void RedFunc1();
+
+JS_REQUIRES_STACK void RedFunc2()
+{
+ RedFunc1();
+}
@@ -0,0 +1,11 @@
+#include "jstypes.h"
+
+typedef void (*GreenFuncPtr)();
+typedef void (JS_REQUIRES_STACK *RedFuncPtr)();
+
+void TakesAsArgument(GreenFuncPtr g);
+
+void Test(RedFuncPtr p)
+{
+ TakesAsArgument(p);
+}
@@ -0,0 +1,15 @@
+#include "jstypes.h"
+
+typedef void (*GreenFuncPtr)();
+typedef void (JS_REQUIRES_STACK *RedFuncPtr)();
+
+struct Foo
+{
+ int i;
+ GreenFuncPtr p;
+};
+
+void Test(Foo *foo, RedFuncPtr p)
+{
+ foo->p = p;
+}
@@ -0,0 +1,8 @@
+#include "jstypes.h"
+
+void GreenFunc();
+JS_REQUIRES_STACK void RedFunc();
+
+typedef void (*GreenFuncPtr)();
+
+GreenFuncPtr fpa[2] = {GreenFunc, RedFunc};
@@ -0,0 +1,7 @@
+#include "jstypes.h"
+
+JS_REQUIRES_STACK void RedFunc();
+
+typedef void (*GreenFuncPtr)(int);
+
+GreenFuncPtr gfpa = (GreenFuncPtr) RedFunc;
@@ -0,0 +1,18 @@
+#include "jstypes.h"
+
+void GreenFunc();
+JS_REQUIRES_STACK void RedFunc();
+
+typedef void (*GreenFuncPtr)();
+
+struct S
+{
+ int i;
+ GreenFuncPtr p;
+};
+
+S sa[] = {
+ { 2, GreenFunc },
+ { 1, RedFunc },
+};
+
@@ -0,0 +1,12 @@
+#include "jstypes.h"
+
+JS_REQUIRES_STACK void RedFunc();
+
+typedef void (*GreenFuncPtr)();
+
+struct GreenStruct
+{
+ GreenFuncPtr func;
+};
+
+GreenStruct gs = { RedFunc };
Oops, something went wrong.

0 comments on commit a821f8a

Please sign in to comment.