mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-26 14:22:01 +00:00
347aaac8d3
- Switch improvements: - JSOP_CONDSWITCH is a 1 byte nop, not variable length with the same kind of immediate operand as JSOP_LOOKUPSWITCH (which is useless except for decompilation). New scheme uses SRC_COMMA notes on each JSOP_CASE opcode, usually 2 bytes per note, and a typically-1-byte 2nd offset on SRC_SWITCH: 1 + 2 * ncases vs. the previous JSOP_LOOKUPSWITCH immediate, which consumed: 4 * ncases bytes after the switch opcode just for decompilation. - SRC_SWITCH has two offsets, first to end of switch as before, the second to first case if JSOP_CONDSWITCH, for decompilation. - Optimize switches with all-constant cases using JSOP_TABLESWITH, or if that can't be used, JSOP_LOOKUPSWITCH, before falling back on ECMAv2's JSOP_CONDSWITCH. - Use cx->gcDisabled when evaluating case exprs at compile time for old, pre-ECMAv2 switches, to prevent branch-callback-based GC invocations from ripping apart the unrooted temporary script for each case expr. - Fixed up stale SRC_SWITCH comments in jsemit.h. jsemit.c jsemit.h - TREE_CONTEXT_INIT to match ATOM_LIST_INIT, not English word order. - Reorganized JSCodeGenerator to sort of match argument order to js_InitCodeGenerator. - Got rid of confusing CG_RESET* macros and used memset(cg, 0, sizeof *cg) and non-zero-default init in js_InitCodeGenerator. js_ResetCodeGenerator just releases the code and temp arena pools and leaves the cg in a state where it must be re-initialized (as before, but more obvious). - In the same spirit, don't do partial "resets" or src and trynotes in their js_FinishTaking*Notes functions -- those are friends of jsscript.c and are not general, idempotent functions. jsapi.c jsapi.h jsarray.c jsatom.c jsatom.h jscntxt.c jsemit.c jsmsg.def jsnum.c jsobj.c jsopcode.c jsregexp.c jsscan.c jsstr.c jsxdrapi. - Use PR_snprintf rather than sprintf always, so we don't have to worry about systems with 64-bit longs that overflow 12-byte buffers and open Morris-Worm-type security holes. - Trim extra spaces, fix hanging indentation, and similar anal retention. - Renamed JSMSG_BAD_PROTO_SORT to JSMSG_BAD_SORT_ARG cuz that's what it is complaining about. - SRC_CATCHGUARD still lived in comments, but it's SRC_CATCH in code. jscntxt.c jscntxt.h jsinterp.c - Packed nearby JSPackedBools and added a new one: gcDisabled, for use by jsemit.c's pre-ECMAv2 switch case expr eval. - Rip out old js_InterpreterHooks stuff from original liveconnect (moja). - Remove javaData and savedErrors from JSContext. Leaving it to fur or shaver to remove javaData from jsscript.h.
77 lines
2.1 KiB
C
77 lines
2.1 KiB
C
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
*
|
|
* The contents of this file are subject to the Netscape Public License
|
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
* http://www.mozilla.org/NPL/
|
|
*
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
* for the specific language governing rights and limitations under the
|
|
* NPL.
|
|
*
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
* Reserved.
|
|
*/
|
|
|
|
#ifndef jsdate_h___
|
|
#define jsdate_h___
|
|
/*
|
|
* JS Date class interface.
|
|
*/
|
|
|
|
PR_BEGIN_EXTERN_C
|
|
|
|
extern JSObject *
|
|
js_InitDateClass(JSContext *cx, JSObject *obj);
|
|
|
|
/*
|
|
* These functions provide a C interface to the date/time object
|
|
*/
|
|
extern JS_FRIEND_API(JSObject*)
|
|
js_NewDateObject(JSContext* cx, int year, int mon, int mday,
|
|
int hour, int min, int sec);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetYear(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetMonth(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetDate(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetHours(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetMinutes(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(int)
|
|
js_DateGetSeconds(JSContext *cx, JSObject* obj);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetYear(JSContext *cx, JSObject *obj, int year);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetMonth(JSContext *cx, JSObject *obj, int year);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetDate(JSContext *cx, JSObject *obj, int date);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetHours(JSContext *cx, JSObject *obj, int hours);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetMinutes(JSContext *cx, JSObject *obj, int minutes);
|
|
|
|
extern JS_FRIEND_API(void)
|
|
js_DateSetSeconds(JSContext *cx, JSObject *obj, int seconds);
|
|
|
|
|
|
PR_END_EXTERN_C
|
|
|
|
#endif /* jsdate_h___ */
|