RPM Package Manager, CVS Repository http://rpm5.org/cvs/ ____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson Root: /v/rpm/cvs Email: j...@rpm5.org Module: rpm Date: 04-Jul-2017 05:06:19 Branch: rpm-5_4 Handle: 2017070403061900 Modified files: (Branch: rpm-5_4) rpm/rpmio rpmjs45.cpp Log: - rpmjs45: WIP. Summary: Revision Changes Path 1.1.2.20 +156 -6 rpm/rpmio/rpmjs45.cpp ____________________________________________________________________________ patch -p0 <<'@@ .' Index: rpm/rpmio/rpmjs45.cpp ============================================================================ $ cvs diff -u -r1.1.2.19 -r1.1.2.20 rpmjs45.cpp --- rpm/rpmio/rpmjs45.cpp 3 Jul 2017 09:58:52 -0000 1.1.2.19 +++ rpm/rpmio/rpmjs45.cpp 4 Jul 2017 03:06:19 -0000 1.1.2.20 @@ -7,8 +7,9 @@ #include "system.h" #define JS_CODEGEN_X64 1 +#define moz_xmalloc(_len) malloc(_len) -#include <nspr.h> +#include <nspr.h> #include "mozilla/ArrayUtils.h" #include "mozilla/Atomics.h" @@ -138,6 +139,7 @@ }; namespace js { +bool gCanUseExtraThreads = false; namespace shell { #ifdef NOTYET @@ -3423,6 +3425,7 @@ if (!str) return false; +#ifdef FIXME AutoStableStringChars strChars(cx); if (!strChars.initTwoByte(cx, str)) return false; @@ -3431,6 +3434,14 @@ if (!JS_AtomizeAndPinUCStringN(cx, chars.start().get(), chars.length())) return false; +#else + JSAutoByteString chars(cx, str); + if (!chars) + return false; + + if (!JS_AtomizeAndPinStringN(cx, chars.ptr(), chars.length())) + return false; +#endif args.rval().setUndefined(); return true; @@ -3578,8 +3589,10 @@ JS_FireOnNewGlobalObject(cx, obj); +#ifdef HACK if (!cx->compartment()->wrap(cx, &obj)) return nullptr; +#endif return obj; } #endif @@ -3589,8 +3602,10 @@ EvalInContext(JSContext* cx, unsigned argc, Value* vp) { CallArgs args = CallArgsFromVp(argc, vp); +#ifdef FIXME if (!args.requireAtLeast(cx, "evalcx", 1)) return false; +#endif RootedString str(cx, ToString(cx, args[0])); if (!str) @@ -3603,6 +3618,7 @@ return false; } +#ifdef FIXME AutoStableStringChars strChars(cx); if (!strChars.initTwoByte(cx, str)) return false; @@ -3610,6 +3626,13 @@ mozilla::Range<const char16_t> chars = strChars.twoByteRange(); size_t srclen = chars.length(); const char16_t* src = chars.start().get(); +#else + JSAutoByteString chars(cx, str); + if (!chars) + return false; + size_t srclen = chars.length(); + const char* src = chars.ptr(); +#endif bool lazy = false; if (srclen == 4) { @@ -3656,13 +3679,16 @@ } } +#ifdef HACK if (!cx->compartment()->wrap(cx, args.rval())) return false; +#endif return true; } #endif +#ifdef FIXME struct WorkerInput { JSRuntime* runtime; @@ -3677,6 +3703,22 @@ js_free(chars); } }; +#else +struct WorkerInput +{ + JSRuntime* runtime; + char* chars; + size_t length; + + WorkerInput(JSRuntime* runtime, char* chars, size_t length) + : runtime(runtime), chars(chars), length(length) + {} + + ~WorkerInput() { + if (chars) free(chars); + } +}; +#endif static void SetWorkerRuntimeOptions(JSRuntime* rt); @@ -3717,7 +3759,9 @@ return; } +#ifdef FIXME JS::SetLargeAllocationFailureCallback(rt, my_LargeAllocFailCallback, (void*)cx); +#endif do { JSAutoRequest ar(cx); @@ -3767,6 +3811,7 @@ return false; } +#ifdef FIXME if (!args[0].toString()->ensureLinear(cx)) return false; @@ -3780,6 +3825,18 @@ WorkerInput* input = js_new<WorkerInput>(cx->runtime(), chars, str->length()); if (!input) return false; +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; + size_t nb = chars.length(); + char * b = (char *) js_malloc(nb); + memcpy(b, chars.ptr(), nb); + + WorkerInput* input = js_new<WorkerInput>(cx->runtime(), b, nb); + if (!input) + return false; +#endif PRThread* thread = PR_CreateThread(PR_USER_THREAD, WorkerMain, input, PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, PR_JOINABLE_THREAD, @@ -4292,12 +4349,17 @@ return false; } if (!args[0].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected string to compile, got %s", typeName); +#else + JS_ReportError(cx, "expected string to compile"); +#endif return false; } RootedObject global(cx, JS::CurrentGlobalOrNull(cx)); +#ifdef FIXME JSFlatString* scriptContents = args[0].toString()->ensureFlat(cx); if (!scriptContents) return false; @@ -4305,6 +4367,11 @@ AutoStableStringChars stableChars(cx); if (!stableChars.initTwoByte(cx, scriptContents)) return false; +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; +#endif JS::CompileOptions options(cx); options.setIntroductionType("js shell compile") @@ -4312,8 +4379,12 @@ .setIsRunOnce(true) .setNoScriptRval(true); RootedScript script(cx); +#ifdef FIXME const char16_t* chars = stableChars.twoByteRange().start().get(); bool ok = JS_CompileUCScript(cx, chars, scriptContents->length(), options, &script); +#else + bool ok = JS_CompileScript(cx, chars.ptr(), chars.length(), options, &script); +#endif args.rval().setUndefined(); return ok; } @@ -4331,22 +4402,32 @@ } if (!args[0].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected string to compile, got %s", typeName); +#else + JS_ReportError(cx, "expected string to compile"); +#endif return false; } RootedObject global(cx, JS::CurrentGlobalOrNull(cx)); +#ifdef FIXME JSFlatString* scriptContents = args[0].toString()->ensureFlat(cx); if (!scriptContents) return false; +#endif mozilla::UniquePtr<char, JS::FreePolicy> filename; CompileOptions options(cx); if (args.length() > 1) { if (!args[1].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[1]); JS_ReportError(cx, "expected filename string, got %s", typeName); +#else + JS_ReportError(cx, "expected filename string"); +#endif return false; } @@ -4360,6 +4441,7 @@ options.setFileAndLine("<string>", 1); } +#ifdef FIXME AutoStableStringChars stableChars(cx); if (!stableChars.initTwoByte(cx, scriptContents)) return false; @@ -4373,6 +4455,11 @@ return false; args.rval().setObject(*module); +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; +#endif return true; } #endif @@ -4389,8 +4476,12 @@ } if (!args[0].isObject() || !args[0].toObject().is<JSFunction>()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected hook function, got %s", typeName); +#else + JS_ReportError(cx, "expected hook function"); +#endif return false; } @@ -4424,11 +4515,16 @@ return false; } if (!args[0].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected string to parse, got %s", typeName); +#else + JS_ReportError(cx, "expected string to parse"); +#endif return false; } +#ifdef FIXME JSFlatString* scriptContents = args[0].toString()->ensureFlat(cx); if (!scriptContents) return false; @@ -4439,10 +4535,16 @@ size_t length = scriptContents->length(); const char16_t* chars = stableChars.twoByteRange().start().get(); +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; +#endif CompileOptions options(cx); options.setIntroductionType("js shell parse") .setFileAndLine("<string>", 1); +#ifdef FIXME Parser<FullParseHandler> parser(cx, &cx->tempLifoAlloc(), options, chars, length, /* foldConstants = */ true, nullptr, nullptr); if (!parser.checkOptions()) @@ -4455,6 +4557,7 @@ DumpParseTree(pn); fputc('\n', stderr); #endif +#endif /* FIXME */ args.rval().setUndefined(); return true; } @@ -4474,17 +4577,19 @@ return false; } if (!args[0].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected string to parse, got %s", typeName); +#else + JS_ReportError(cx, "expected string to parse"); +#endif return false; } +#ifdef FIXME JSFlatString* scriptContents = args[0].toString()->ensureFlat(cx); if (!scriptContents) return false; - CompileOptions options(cx); - options.setIntroductionType("js shell syntaxParse") - .setFileAndLine("<string>", 1); AutoStableStringChars stableChars(cx); if (!stableChars.initTwoByte(cx, scriptContents)) @@ -4492,6 +4597,17 @@ const char16_t* chars = stableChars.twoByteRange().start().get(); size_t length = scriptContents->length(); +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; +#endif + + CompileOptions options(cx); + options.setIntroductionType("js shell syntaxParse") + .setFileAndLine("<string>", 1); + +#ifdef FIXME Parser<frontend::SyntaxParseHandler> parser(cx, &cx->tempLifoAlloc(), options, chars, length, false, nullptr, nullptr); if (!parser.checkOptions()) @@ -4507,6 +4623,9 @@ MOZ_ASSERT(cx->runtime()->hadOutOfMemory); return false; } +#else + bool succeeded = false; +#endif /* FIXME */ args.rval().setBoolean(succeeded); return true; @@ -4613,8 +4732,12 @@ return false; } if (!args[0].isString()) { +#ifdef FIXME const char* typeName = InformalValueTypeName(args[0]); JS_ReportError(cx, "expected string to parse, got %s", typeName); +#else + JS_ReportError(cx, "expected string to parse"); +#endif return false; } @@ -4642,6 +4765,7 @@ // heuristics that make sense for a real browser. options.forceAsync = true; +#ifdef FIXME JSString* scriptContents = args[0].toString(); AutoStableStringChars stableChars(cx); if (!stableChars.initTwoByte(cx, scriptContents)) @@ -4649,7 +4773,13 @@ size_t length = scriptContents->length(); const char16_t* chars = stableChars.twoByteRange().start().get(); +#else + JSAutoByteString chars(cx, args[0].toString()); + if (!chars) + return false; +#endif +#ifdef FIXME // Make sure we own the string's chars, so that they are not freed before // the compilation is finished. ScopedJSFreePtr<char16_t> ownedChars; @@ -4682,6 +4812,7 @@ offThreadState.abandon(cx); return false; } +#endif /* FIXME */ args.rval().setUndefined(); return true; @@ -5024,6 +5155,7 @@ if (!JS_GetProperty(cx, opts, "principal", &v)) return false; +#ifdef HACK if (!v.isUndefined()) { uint32_t bits; if (!ToUint32(cx, v, &bits)) @@ -5033,6 +5165,7 @@ return false; JS_HoldPrincipals(principals); } +#endif /* HACK */ } RootedObject global(cx, NewGlobalObject(cx, options, principals)); @@ -5813,19 +5946,30 @@ if (!codeString || !codeString->ensureFlat(cx)) return false; +#ifdef FIXME AutoStableStringChars stableChars(cx); if (!stableChars.initTwoByte(cx, codeString)) return false; const char16_t* chars = stableChars.twoByteRange().start().get(); size_t length = codeString->length(); +#else + JSAutoByteString chars(cx, codeString); + if (!chars) + return false; +#endif CompileOptions options(cx); options.setIntroductionType("entryPoint eval") .setFileAndLine("entryPoint eval", 1); js::shell::ShellAutoEntryMonitor sarep(cx); +#ifdef FIXME if (!JS::Evaluate(cx, options, chars, length, &dummy)) return false; +#else + if (!JS::Evaluate(cx, options, chars.ptr(), chars.length(), &dummy)) + return false; +#endif return sarep.buildResult(cx, args.rval()); } } @@ -5866,10 +6010,14 @@ JS_FN("notes", Notes, 1,0), JS_FN("stackDump", StackDump, 3,0), #endif /* DEBUG */ +#endif /* NOTYET */ JS_FN("intern", Intern, 1,0), +#ifdef NOTYET JS_FN("getslx", GetSLX, 1,0), +#endif /* NOTYET */ JS_FN("evalcx", EvalInContext, 1,0), JS_FN("evalInWorker", EvalInWorker, 1,0), +#ifdef NOTYET JS_FN("getSharedArrayBuffer", GetSharedArrayBuffer, 0,0), JS_FN("setSharedArrayBuffer", SetSharedArrayBuffer, 0,0), JS_FN("shapeOf", ShapeOf, 1,0), @@ -5877,15 +6025,17 @@ JS_FN("arrayInfo", ArrayInfo, 1,0), #endif JS_FN("sleep", Sleep_fn, 1,0), +#endif /* NOTYET */ JS_FN("compile", Compile, 1,0), JS_FN("parseModule", ParseModule, 1,0), +#ifdef NOTYET JS_FN("setModuleResolveHook", SetModuleResolveHook, 1,0), #endif /* NOTYET */ JS_FN("getModuleLoadPath", GetModuleLoadPath, 0,0), -#ifdef NOTYET JS_FN("parse", Parse, 1,0), JS_FN("syntaxParse", SyntaxParse, 1,0), JS_FN("offThreadCompileScript", OffThreadCompileScript, 1,0), +#ifdef NOTYET JS_FN("runOffThreadScript", runOffThreadScript, 0,0), JS_FN("timeout", Timeout, 1,0), #endif /* NOTYET */ @@ -5904,8 +6054,8 @@ JS_FN("decompileThis", DecompileThisScript, 0,0), #endif /* NOTYET */ JS_FN("thisFilename", ThisFilename, 0,0), -#ifdef NOTYET JS_FN("newGlobal", NewGlobal, 1,0), +#ifdef NOTYET JS_FN("nukeCCW", NukeCCW, 1,0), #endif /* NOTYET */ JS_FN("createMappedArrayBuffer", CreateMappedArrayBuffer, 1,0), @@ . ______________________________________________________________________ RPM Package Manager http://rpm5.org CVS Sources Repository rpm-cvs@rpm5.org