--- jsapi.c 2006/06/16 02:01:22 1.1.1.1
+++ jsapi.c 2006/04/04 14:09:44 1.1.1.2
@@ -884,6 +884,10 @@
/* XXXbe give the GC or another request calling it a chance to run here?
Assumes FIFO scheduling */
JS_LOCK_GC(rt);
+ if (rt->gcThread != cx->thread) {
+ while (rt->gcLevel > 0)
+ JS_AWAIT_GC_DONE(rt);
+ }
rt->requestCount++;
JS_UNLOCK_GC(rt);
}
@@ -1465,7 +1469,7 @@
AddAtomToArray(JSContext *cx, JSAtom *atom, JSIdArray *ida, jsint *ip)
{
jsint i, length;
-
+
i = *ip;
length = ida->length;
if (i >= length) {
@@ -1843,7 +1847,7 @@
bytes = rt->gcBytes;
lastBytes = rt->gcLastBytes;
if ((bytes > 8192 && bytes > lastBytes + lastBytes / 2) ||
- rt->gcMallocBytes > rt->gcMaxMallocBytes) {
+ rt->gcMallocBytes > rt->gcMaxBytes) {
/*
* Run the GC if we have half again as many bytes of GC-things as
* the last time we GC'd, or if we have malloc'd more bytes through
@@ -1877,19 +1881,6 @@
return js_IsAboutToBeFinalized(cx, thing);
}
-JS_PUBLIC_API(void)
-JS_SetGCParameter(JSRuntime *rt, JSGCParamKey key, uint32 value)
-{
- switch (key) {
- case JSGC_MAX_BYTES:
- rt->gcMaxBytes = value;
- break;
- case JSGC_MAX_MALLOC_BYTES:
- rt->gcMaxMallocBytes = value;
- break;
- }
-}
-
JS_PUBLIC_API(intN)
JS_AddExternalStringFinalizer(JSStringFinalizeOp finalizer)
{
@@ -2295,7 +2286,7 @@
scope = js_GetMutableScope(cx, obj);
if (scope)
SCOPE_SET_SEALED(scope);
- JS_UNLOCK_SCOPE(cx, scope);
+ JS_UNLOCK_OBJ(cx, obj);
if (!scope)
return JS_FALSE;
@@ -3200,7 +3191,7 @@
void *pdata;
jsint index;
JSIdArray *ida;
-
+
CHECK_REQUEST(cx);
iterobj = js_NewObject(cx, &prop_iter_class, NULL, obj);
if (!iterobj)
@@ -3276,7 +3267,7 @@
ida = (JSIdArray *) JS_GetPrivate(cx, iterobj);
JS_ASSERT(i <= ida->length);
if (i == 0) {
- *idp = JSVAL_VOID;
+ *idp = JSVAL_VOID;
} else {
*idp = ida->vector[--i];
OBJ_SET_SLOT(cx, iterobj, JSSLOT_ITER_INDEX, INT_TO_JSVAL(i));
@@ -3441,12 +3432,6 @@
return fun->flags;
}
-JS_PUBLIC_API(uint16)
-JS_GetFunctionArity(JSFunction *fun)
-{
- return fun->nargs;
-}
-
JS_PUBLIC_API(JSBool)
JS_ObjectIsFunction(JSContext *cx, JSObject *obj)
{
@@ -3626,7 +3611,7 @@
JSScript *script;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
script = JS_CompileUCScript(cx, obj, chars, length, filename, lineno);
@@ -3644,7 +3629,7 @@
JSScript *script;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
script = JS_CompileUCScriptForPrincipals(cx, obj, principals,
@@ -3713,7 +3698,7 @@
JSErrorReporter older;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return JS_TRUE;
@@ -3836,7 +3821,7 @@
JSFunction *fun;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
fun = JS_CompileUCFunction(cx, obj, name, nargs, argnames, chars, length,
@@ -3856,7 +3841,7 @@
JSFunction *fun;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
fun = JS_CompileUCFunctionForPrincipals(cx, obj, principals, name,
@@ -4061,7 +4046,7 @@
JSBool ok;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return JS_FALSE;
ok = JS_EvaluateUCScript(cx, obj, chars, length, filename, lineno, rval);
@@ -4080,7 +4065,7 @@
JSBool ok;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return JS_FALSE;
ok = JS_EvaluateUCScriptForPrincipals(cx, obj, principals, chars, length,
@@ -4230,15 +4215,16 @@
{
jschar *chars;
JSString *str;
+ size_t charsLength = length;
CHECK_REQUEST(cx);
/* Make a Unicode vector from the 8-bit char codes in bytes. */
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &charsLength);
if (!chars)
return NULL;
/* Free chars (but not bytes, which caller frees on error) if we fail. */
- str = js_NewString(cx, chars, length, 0);
+ str = js_NewString(cx, chars, charsLength, 0);
if (!str) {
JS_free(cx, chars);
return NULL;
@@ -4257,7 +4243,7 @@
JSString *str;
CHECK_REQUEST(cx);
- js = js_InflateString(cx, s, n);
+ js = js_InflateString(cx, s, &n);
if (!js)
return NULL;
str = js_NewString(cx, js, n, 0);
@@ -4277,7 +4263,7 @@
if (!s)
return cx->runtime->emptyString;
n = strlen(s);
- js = js_InflateString(cx, s, n);
+ js = js_InflateString(cx, s, &n);
if (!js)
return NULL;
str = js_NewString(cx, js, n, 0);
@@ -4421,6 +4407,30 @@
return JS_TRUE;
}
+JS_PUBLIC_API(JSBool)
+JS_EncodeCharacters(JSContext *cx, const jschar *src, size_t srclen, char *dst,
+ size_t *dstlenp)
+{
+ return js_DeflateStringToBuffer(cx, src, srclen, dst, dstlenp);
+}
+
+JS_PUBLIC_API(JSBool)
+JS_DecodeBytes(JSContext *cx, const char *src, size_t srclen, jschar *dst,
+ size_t *dstlenp)
+{
+ return js_InflateStringToBuffer(cx, src, srclen, dst, dstlenp);
+}
+
+JS_PUBLIC_API(JSBool)
+JS_CStringsAreUTF8()
+{
+#ifdef JS_C_STRINGS_ARE_UTF8
+ return JS_TRUE;
+#else
+ return JS_FALSE;
+#endif
+}
+
/************************************************************************/
JS_PUBLIC_API(void)
@@ -4502,7 +4512,7 @@
JS_PUBLIC_API(void)
JS_ReportOutOfMemory(JSContext *cx)
{
- js_ReportOutOfMemory(cx, js_GetErrorMessage);
+ js_ReportOutOfMemory(cx);
}
JS_PUBLIC_API(JSErrorReporter)
@@ -4528,7 +4538,7 @@
JSObject *obj;
CHECK_REQUEST(cx);
- chars = js_InflateString(cx, bytes, length);
+ chars = js_InflateString(cx, bytes, &length);
if (!chars)
return NULL;
obj = js_NewRegExpObject(cx, NULL, chars, length, flags);
|