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:   07-Jul-2017 13:29:12
  Branch: rpm-5_4                          Handle: 2017070711291200

  Modified files:           (Branch: rpm-5_4)
    rpm/js                  rpmjs45.cpp

  Log:
    - rpmjs45: WIP.

  Summary:
    Revision    Changes     Path
    1.1.2.3     +61 -11     rpm/js/rpmjs45.cpp
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/js/rpmjs45.cpp
  ============================================================================
  $ cvs diff -u -r1.1.2.2 -r1.1.2.3 rpmjs45.cpp
  --- rpm/js/rpmjs45.cpp        7 Jul 2017 05:06:15 -0000       1.1.2.2
  +++ rpm/js/rpmjs45.cpp        7 Jul 2017 11:29:12 -0000       1.1.2.3
  @@ -8369,8 +8369,12 @@
   
       JS::SetLargeAllocationFailureCallback(I->rt, nullptr, nullptr);
   
  +#ifdef       DYING
       if (I->cx)
        JS_DestroyContext(I->cx);
  +#else
  +    DestroyContext(I->cx, true);
  +#endif
       I->cx = NULL;
   
       KillWatchdog(I->rt);
  @@ -8404,6 +8408,9 @@
       JSPrincipals * _principals = NULL;
       bool ok;
   
  +    I = (JSI_t) calloc(1, sizeof(*I));
  +assert(I);
  +
       // Start the engine.
       if (rpmjss_nopens++ == 0)
        JS_Init();
  @@ -8411,14 +8418,10 @@
       ok = InitSharedArrayBufferMailbox();
   assert(ok);
   
  -    I = (JSI_t) calloc(1, sizeof(*I));
  -assert(I);
  -
       static uint32_t _maxbytes = 8L * 1024L * 1024L;
       static uint32_t _maxNurseryBytes = JS::DefaultNurseryBytes;
  -    JSRuntime * _parentRuntime = nullptr;
   
  -    JSRuntime * rt = JS_NewRuntime(_maxbytes, _maxNurseryBytes, 
_parentRuntime);
  +    JSRuntime * rt = JS_NewRuntime(_maxbytes, _maxNurseryBytes);
   assert(rt);
       I->rt = rt;
   
  @@ -8432,13 +8435,14 @@
   #ifdef       DYING
       JS_SetRuntimePrivate(rt, (void *)jss);
   #else
  -    JS_SetRuntimePrivate(rt, sr);
  +    JS_SetRuntimePrivate(rt, sr);    // XXX sr.get()
   #endif
    
       JS_SetErrorReporter(rt, my_ErrorReporter);
       JS::SetOutOfMemoryCallback(rt, my_OOMCallback, nullptr);
   
  -    // XXX SetRuntimeOptions(rt, op);
  +    // XXX ok = SetRuntimeOptions(rt, op);
  +    // XXX assert(ok);
   
       sr->interruptFunc.init(rt, NullValue());
       sr->lastWarning.init(rt, NullValue());
  @@ -8454,28 +8458,51 @@
       JS_SetSecurityCallbacks(rt, &ShellPrincipals::securityCallbacks);
       JS_InitDestroyPrincipalsCallback(rt, ShellPrincipals::destroy);
   
  -    // XXX JS_SetInterruptCallback(rt, ShellInterruptCallback);
  -
  +    JS_SetInterruptCallback(rt, ShellInterruptCallback);
       JS::SetAsmJSCacheOps(rt, &asmJSCacheOps);
   
       JS_SetNativeStackQuota(rt, gMaxStackSize);
   
  -    // XXX JS::dbg::SetDebuggerMallocSizeOf(rt, moz_malloc_size_of);
  +    JS::dbg::SetDebuggerMallocSizeOf(rt, moz_malloc_size_of);
  +
  +    ok = offThreadState.init();
  +assert(ok);
   
       ok = InitWatchdog(rt);
   assert(ok);
   
  +#ifdef       DYING
       JSContext * cx = JS_NewContext(rt, _stackChunkSize);
  +#else
  +    JSContext * cx = NewContext(rt);
  +#endif
   assert(cx);
       I->cx = cx;
  +#ifdef       DYING
       JS_SetContextPrivate(cx, (void *)jss);
  -    // XXX JS_SetSecondContextPrivate(cx, (void *)jss);
  +#else
  +    JS_SetSecondContextPrivate(cx, (void *)jss);
  +#endif
   
       JS_SetGCParameter(rt, JSGC_MODE, JSGC_MODE_INCREMENTAL);
       JS_SetGCParameterForThread(cx, JSGC_MAX_CODE_CACHE_BYTES, 16 * 1024 * 
1024  );
   
       JS::SetLargeAllocationFailureCallback(rt, my_LargeAllocFailCallback, 
(void  *)cx);
   
  +    // Set some parameters to allow incremental GC in low memory conditions,
  +    // as is done for the browser, except in more-deterministic builds or 
when
  +    // disabled by command line options.
  +#ifndef JS_MORE_DETERMINISTIC
  +#ifdef       FIXME
  +    if (!op.getBoolOption("no-incremental-gc"))
  +#endif
  +    {
  +        JS_SetGCParameter(rt, JSGC_DYNAMIC_HEAP_GROWTH, 1);
  +        JS_SetGCParameter(rt, JSGC_DYNAMIC_MARK_SLICE, 1);
  +        JS_SetGCParameter(rt, JSGC_SLICE_TIME_BUDGET, 10);
  +    }
  +#endif
  +
       js::SetPreserveWrapperCallback(rt, DummyPreserveWrapperCallback);
   
       // result = Shell(cx, &op, envp);
  @@ -8486,6 +8513,29 @@
        glob = NewGlobalObject(cx, options, _principals);
   assert(glob);
        I->global = glob;
  +
  +     JSAutoCompartment ac(cx, glob);
  +
  +#ifdef       FIXME
  +     int result = ProcessArgs(cx, op);
  +     
  +#ifdef  FIXME
  +        if (enableDisassemblyDumps)
  +            js::DumpCompartmentPCCounts(cx);
  +#endif
  +
  +        if (!op->getBoolOption("no-js-cache-per-process")) {
  +            if (jsCacheAsmJSPath) {
  +                unlink(jsCacheAsmJSPath);
  +                JS_free(cx, const_cast<char*>(jsCacheAsmJSPath));
  +            }
  +            if (jsCacheDir) {
  +                rmdir(jsCacheDir);
  +                JS_free(cx, const_cast<char*>(jsCacheDir));
  +            }
  +        }
  +#endif       /* FIXME */
  +
       }
   
       return I;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to