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

Reply via email to