/[jscoverage]/trunk/js/builtins.tbl
ViewVC logotype

Annotation of /trunk/js/builtins.tbl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 332 - (hide annotations)
Thu Oct 23 19:03:33 2008 UTC (11 years, 9 months ago) by siliconforks
File size: 10723 byte(s)
Add SpiderMonkey from Firefox 3.1b1.

The following directories and files were removed:
correct/, correct.js
liveconnect/
nanojit/
t/
v8/
vprof/
xpconnect/
all JavaScript files (Y.js, call.js, if.js, math-partial-sums.js, md5.js, perfect.js, trace-test.js, trace.js)


1 siliconforks 332 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2     * vim: set ts=8 sw=4 et tw=0 ft=C:
3     *
4     * ***** BEGIN LICENSE BLOCK *****
5     * Version: MPL 1.1/GPL 2.0/LGPL 2.1
6     *
7     * The contents of this file are subject to the Mozilla Public License Version
8     * 1.1 (the "License"); you may not use this file except in compliance with
9     * the License. You may obtain a copy of the License at
10     * http://www.mozilla.org/MPL/
11     *
12     * Software distributed under the License is distributed on an "AS IS" basis,
13     * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
14     * for the specific language governing rights and limitations under the
15     * License.
16     *
17     * The Original Code is Mozilla SpiderMonkey JavaScript 1.9 code, released
18     * June 22, 2008.
19     *
20     * The Initial Developer of the Original Code is
21     * Andreas Gal <gal@uci.edu>
22     *
23     * Contributor(s):
24     *
25     * Alternatively, the contents of this file may be used under the terms of
26     * either of the GNU General Public License Version 2 or later (the "GPL"),
27     * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28     * in which case the provisions of the GPL or the LGPL are applicable instead
29     * of those above. If you wish to allow use of your version of this file only
30     * under the terms of either the GPL or the LGPL, and not to allow others to
31     * use your version of this file under the terms of the MPL, indicate your
32     * decision by deleting the provisions above and replace them with the notice
33     * and other provisions required by the GPL or the LGPL. If you do not delete
34     * the provisions above, a recipient may use your version of this file under
35     * the terms of any one of the MPL, the GPL or the LGPL.
36     *
37     * ***** END LICENSE BLOCK ***** */
38    
39     /**
40     * This file declares the various builtins we recognize, and is
41     * included in various places in interesting ways. Each line starts
42     * with "BUILTIN" then an integer indicating the number of arguments
43     * the builtin takes. Builtins with no arguments are not supported at
44     * the moment.
45     *
46     * This is followed, in parentheses, by the following things, in order:
47     * - A name for the builtin. Prefixed with "F_" this is the opcode name to
48     * pass to insCall. Prefixed with "js_" this is the name of the actual
49     * native method to call.
50     * - The sizes of the arguments to the native, in order. These can be "LO" for
51     * integers (any size), pointers, or jsvals and "F" for doubles.
52     * - The size of the return value. This can be "LO" for 32-bit integers, "P"
53     * for pointers or jsvals, "F" for doubles, "Q" for 64-bit integers.
54     * - The actual C++ type of the return value
55     * - The C++ types of the arguments, in order
56     * - A boolean value (0 = false, 1 = true) indicating whether the builtin call
57     * can be optimized away during common subexpression elimination. This
58     * should only be true if the the builtin is idempotent and the return value
59     * is uniquely determined by the values of the arguments.
60     * - A boolean value (0 = false, 1 = true) indicating whether the builtin call
61     * can be optimized away during constant folding. This should only be true
62     * if the builtin is idempotent and if the return value can be determined at
63     * compile time if the input values are known at compile time.
64     */
65    
66     /*
67     * NB: bool FASTCALL is not compatible with Nanojit's calling convention usage.
68     * Do not use bool FASTCALL, use JSBool only!
69     */
70    
71     BUILTIN2(BoxDouble, LO, F, P, jsval, JSContext*, jsdouble, 1, 1)
72     BUILTIN2(BoxInt32, LO, LO, P, jsval, JSContext*, jsint, 1, 1)
73     BUILTIN1(UnboxDouble, LO, F, jsdouble, jsval, 1, 1)
74     BUILTIN1(UnboxInt32, LO, LO, int32, jsval, 1, 1)
75     BUILTIN2(dmod, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
76     BUILTIN2(imod, LO, LO, LO, jsint, jsint, jsint, 1, 1)
77     BUILTIN1(DoubleToInt32, F, LO, int32, jsdouble, 1, 1)
78     BUILTIN1(DoubleToUint32, F, LO, int32, jsdouble, 1, 1)
79     BUILTIN1(Math_sin, F, F, jsdouble, jsdouble, 1, 1)
80     BUILTIN1(Math_cos, F, F, jsdouble, jsdouble, 1, 1)
81     BUILTIN2(Math_pow, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
82     BUILTIN1(Math_sqrt, F, F, jsdouble, jsdouble, 1, 1)
83     BUILTIN1(Math_floor, F, F, jsdouble, jsdouble, 1, 1)
84     BUILTIN1(Math_ceil, F, F, jsdouble, jsdouble, 1, 1)
85     BUILTIN1(Math_log, F, F, jsdouble, jsdouble, 1, 1)
86     BUILTIN2(Math_max, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
87     BUILTIN4(Array_dense_setelem, LO, LO, LO, LO, LO, bool, JSContext*, JSObject*, jsint, jsval, 0, 0)
88     BUILTIN3(Array_p_join, LO, LO, LO, P, JSString*, JSContext*, JSObject*, JSString*, 0, 0)
89     BUILTIN4(String_p_substring, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, jsint, jsint, 1, 1)
90     BUILTIN3(String_p_substring_1, LO, LO, LO, P, JSString*, JSContext*, JSString*, jsint, 1, 1)
91     BUILTIN3(ConcatStrings, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSString*, 1, 1)
92     BUILTIN3(String_getelem, LO, LO, LO, P, JSString*, JSContext*, JSString*, jsint, 1, 1)
93     BUILTIN2(String_fromCharCode, LO, LO, P, JSString*, JSContext*, jsint, 1, 1)
94     BUILTIN2(String_p_charCodeAt, LO, LO, LO, jsint, JSString*, jsint, 1, 1)
95     BUILTIN3(String_p_concat_1int, LO, LO, LO, P, JSString*, JSContext*, JSString*, jsint, 1, 1)
96     BUILTIN4(String_p_concat_2str, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSString*, JSString*, 1, 1)
97     BUILTIN5(String_p_concat_3str, LO, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSString*, JSString*, JSString*, 1, 1)
98     BUILTIN4(String_p_match, LO, LO, LO, LO, P, JSObject*, JSContext*, JSString*, jsbytecode*, JSObject*, 1, 1)
99     BUILTIN4(String_p_match_obj, LO, LO, LO, LO, P, JSObject*, JSContext*, JSObject*, jsbytecode*, JSObject*, 1, 1)
100     BUILTIN4(String_p_replace_str, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSObject*, JSString*, 1, 1)
101     BUILTIN4(String_p_replace_str2, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSString*, JSString*, 1, 1)
102     BUILTIN5(String_p_replace_str3, LO, LO, LO, LO, LO, P, JSString*, JSContext*, JSString*, JSString*, JSString*, JSString*, 1, 1)
103     BUILTIN3(String_p_split, LO, LO, LO, P, JSObject*, JSContext*, JSString*, JSString*, 0, 0)
104     BUILTIN2(toLowerCase, LO, LO, P, JSString*, JSContext*, JSString*, 1, 1)
105     BUILTIN2(toUpperCase, LO, LO, P, JSString*, JSContext*, JSString*, 1, 1)
106     BUILTIN1(Math_random, LO, F, jsdouble, JSRuntime*, 0, 0)
107     BUILTIN2(EqualStrings, LO, LO, LO, bool, JSString*, JSString*, 1, 1)
108     BUILTIN2(CompareStrings, LO, LO, LO, bool, JSString*, JSString*, 1, 1)
109     BUILTIN2(StringToNumber, LO, LO, F, jsdouble, JSContext*, JSString*, 1, 1)
110     BUILTIN2(StringToInt32, LO, LO, LO, jsint, JSContext*, JSString*, 1, 1)
111     BUILTIN2(ParseInt, LO, LO, F, jsdouble, JSContext*, JSString*, 1, 1)
112     BUILTIN1(ParseIntDouble, F, F, jsdouble, jsdouble, 1, 1)
113     BUILTIN2(ParseFloat, LO, LO, F, jsdouble, JSContext*, JSString*, 1, 1)
114     BUILTIN3(Any_getprop, LO, LO, LO, P, jsval, JSContext*, JSObject*, JSString*, 0, 0)
115     BUILTIN4(Any_setprop, LO, LO, LO, LO, LO, bool, JSContext*, JSObject*, JSString*, jsval, 0, 0)
116     BUILTIN3(Any_getelem, LO, LO, LO, P, jsval, JSContext*, JSObject*, jsuint, 0, 0)
117     BUILTIN4(Any_setelem, LO, LO, LO, LO, LO, bool, JSContext*, JSObject*, jsuint, jsval, 0, 0)
118     BUILTIN3(FastValueToIterator, LO, LO, LO, P, JSObject*, JSContext*, jsuint, jsval, 0, 0)
119     BUILTIN2(FastCallIteratorNext, LO, LO, P, JSObject*, JSContext*, JSObject*, 0, 0)
120     BUILTIN2(CloseIterator, LO, LO, LO, bool, JSContext*, jsval, 0, 0)
121     BUILTIN2(CallTree, LO, LO, P, nanojit::GuardRecord*, avmplus::InterpState*, nanojit::Fragment*, 0, 0)
122     BUILTIN2(FastNewArray, LO, LO, P, JSObject*, JSContext*, JSObject*, 0, 0)
123     BUILTIN2(FastNewObject, LO, LO, P, JSObject*, JSContext*, JSObject*, 0, 0)
124     BUILTIN3(AddProperty, LO, LO, LO, LO, bool, JSContext*, JSObject*, JSScopeProperty*, 0, 0)
125     BUILTIN3(HasNamedProperty, LO, LO, LO, LO, bool, JSContext*, JSObject*, JSString*, 0, 0)
126     BUILTIN3(CallGetter, LO, LO, LO, P, jsval, JSContext*, JSObject*, JSScopeProperty*, 0, 0)
127     BUILTIN2(TypeOfObject, LO, LO, P, JSString*, JSContext*, JSObject*, 1, 1)
128     BUILTIN2(TypeOfBoolean, LO, LO, P, JSString*, JSContext*, jsint, 1, 1)
129     BUILTIN2(NumberToString, LO, F, P, JSString*, JSContext*, jsdouble, 1, 1)
130     BUILTIN3(Object_p_hasOwnProperty,
131     LO, LO, LO, LO, jsint, JSContext*, JSObject*, JSString*, 0, 0)
132     BUILTIN3(Object_p_propertyIsEnumerable,
133     LO, LO, LO, LO, jsint, JSContext*, JSObject*, JSString*, 0, 0)
134     BUILTIN2(BooleanToNumber, LO, LO, F, jsdouble, JSContext*, jsint, 1, 1)
135     BUILTIN2(ObjectToString, LO, LO, P, JSString*, JSContext*, JSObject*, 0, 0)
136     BUILTIN3(Array_1int, LO, LO, LO, P, JSObject*, JSContext*, JSObject*, jsint, 0, 0)
137     BUILTIN3(Array_1str, LO, LO, LO, P, JSObject*, JSContext*, JSObject*, JSString*, 0, 0)
138     BUILTIN4(Array_2obj, LO, LO, LO, LO, P, JSObject*, JSContext*, JSObject*, JSObject*, JSObject**, 0, 0)
139     BUILTIN5(Array_3num, LO, LO, F, F, F, P, JSObject*, JSContext*, JSObject*, jsdouble, jsdouble, jsdouble, 0, 0)
140     BUILTIN1(Arguments, LO, P, JSObject*, JSContext*, 0, 0)
141    
142     // Don't really need an argument here, but we don't support arg-less builtins
143     BUILTIN1(Date_now, LO, F, jsdouble, JSContext*, 0, 0)
144    
145     // soft float
146     BUILTIN1(fneg, F, F, jsdouble, jsdouble, 1, 1)
147     BUILTIN1(i2f, LO, F, jsdouble, jsint, 1, 1)
148     BUILTIN1(u2f, LO, F, jsdouble, jsuint, 1, 1)
149     BUILTIN2(fcmpeq, F, F, LO, jsint, jsdouble, jsdouble, 1, 1)
150     BUILTIN2(fcmplt, F, F, LO, jsint, jsdouble, jsdouble, 1, 1)
151     BUILTIN2(fcmple, F, F, LO, jsint, jsdouble, jsdouble, 1, 1)
152     BUILTIN2(fcmpgt, F, F, LO, jsint, jsdouble, jsdouble, 1, 1)
153     BUILTIN2(fcmpge, F, F, LO, jsint, jsdouble, jsdouble, 1, 1)
154     BUILTIN2(fmul, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
155     BUILTIN2(fadd, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
156     BUILTIN2(fdiv, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)
157     BUILTIN2(fsub, F, F, F, jsdouble, jsdouble, jsdouble, 1, 1)

  ViewVC Help
Powered by ViewVC 1.1.24