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:   09-Jul-2017 11:42:42
  Branch: rpm-5_4                          Handle: 2017070909424100

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

  Log:
    - rpmjs45: extend the rpmjss object.

  Summary:
    Revision    Changes     Path
    1.1.2.6     +133 -129   rpm/js/rpmjs45.cpp
    1.1.2.3     +86 -0      rpm/rpmio/rpmjss.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/js/rpmjs45.cpp
  ============================================================================
  $ cvs diff -u -r1.1.2.5 -r1.1.2.6 rpmjs45.cpp
  --- rpm/js/rpmjs45.cpp        9 Jul 2017 07:10:29 -0000       1.1.2.5
  +++ rpm/js/rpmjs45.cpp        9 Jul 2017 09:42:41 -0000       1.1.2.6
  @@ -26,6 +26,9 @@
       JSObject *global;
   };
   
  +struct rpmjss_s _jss;
  +rpmjss jss = &_jss;
  +
   /*==============================================================*/
   static void mozFini(rpmjss jss)
   {
  @@ -276,10 +279,6 @@
   #include <poptIO.h>
   
   /*==============================================================*/
  -struct rpmjss_s _jss;
  -rpmjss jss = &_jss;
  -
  -#ifdef  NOTYET
   #define N_(_str)    (_str)
   struct poptOption rpmjssIPoptTable[] = {
     { "allow", '\0', POPT_BIT_SET,             &_jss.flags, RPMJSS_FLAGS_ALLOW,
  @@ -311,36 +310,6 @@
     POPT_TABLEEND
   };
   
  -static const char *Ifile;
  -static const char *Imodule;
  -static const char *Icode;
  -static const char *js_cache;
  -static const char *script;
  -static const char **scriptArgs;
  -static int thread_count;
  -
  -typedef enum rpmjssIonFlags_e {
  -    ION_SHARED_STUBS         = (1 <<  0),
  -    ION_SCALAR_REPLACEMENT   = (1 <<  1),
  -    ION_GVN                  = (1 <<  2),
  -    ION_LICM                 = (1 <<  3),
  -    ION_EDGECASE_ANALYSIS    = (1 <<  4),
  -    ION_PGO                  = (1 <<  5),
  -    ION_RANGE_ANALYSIS               = (1 <<  6),
  -    ION_SINCOS                       = (1 <<  7),
  -    ION_SINK                 = (1 <<  8),
  -    ION_LOOP_UNROLLING               = (1 <<  9),
  -    ION_INSTRUCTION_REORDERING       = (1 << 10),
  -    ION_CHECK_RANGE_ANALYSIS = (1 << 11),
  -    ION_EXTRA_CHECKS         = (1 << 12),
  -    ION_INLINING             = (1 << 13),
  -    ION_OSR                  = (1 << 14),
  -    ION_LIMIT_SCRIPT_SIZE    = (1 << 15),
  -    ION_EAGER                        = (1 << 16),
  -    ION_OFFTHREAD_COMPILE    = (1 << 17),
  -    ION_PARALLEL_COMPILE     = (1 << 18),
  -} rpmjssIonFlags;
  -
   rpmjssIonFlags _ionf = (rpmjssIonFlags) (
       ION_SCALAR_REPLACEMENT |
       ION_GVN |
  @@ -355,150 +324,186 @@
       0
   );
   
  -static int ion_warmup_threshold;
  -static const char * ion_regalloc;
  -
   struct poptOption rpmjssIonPoptTable[] = {
     { "ion-shared-stubs", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_SHARED_STUBS,
  +     &_jss.ionf, ION_SHARED_STUBS,
        N_("Use shared stubs (default: off)"), NULL },
     { "ion-scalar-replacement", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_SCALAR_REPLACEMENT,
  +     &_jss.ionf, ION_SCALAR_REPLACEMENT,
        N_("Scalar replacement (default: on)"), NULL },
     { "ion-gvn", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_GVN,
  +     &_jss.ionf, ION_GVN,
        N_("Global value numbering (default: on)"), NULL },
     { "ion-licm", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_LICM,
  +     &_jss.ionf, ION_LICM,
        N_("Loop invariant code motion (default: on)"), NULL },
     { "ion-edgecase-analysis", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_EDGECASE_ANALYSIS,
  +     &_jss.ionf, ION_EDGECASE_ANALYSIS,
        N_("Find edge cases where Ion can avoid bailouts (default: off)"), NULL 
},
     { "ion-pgo", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_PGO,
  +     &_jss.ionf, ION_PGO,
        N_("Profile guided optimization (default: off)"), NULL },
     { "ion-range-analysis", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_RANGE_ANALYSIS,
  +     &_jss.ionf, ION_RANGE_ANALYSIS,
        N_("Range analysis (default: on)"), NULL },
     { "ion-sincos", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_SINCOS,
  +     &_jss.ionf, ION_SINCOS,
        N_("Replace sin(x)/cos(x) to sincos(x) (default: on)"), NULL },
     { "ion-sink", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_SINK,
  +     &_jss.ionf, ION_SINK,
        N_("Sink code motion (default: off)"), NULL },
     { "ion-loop-unrolling", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_LOOP_UNROLLING,
  +     &_jss.ionf, ION_LOOP_UNROLLING,
        N_("Loop unrolling (default: off)"), NULL },
     { "ion-instruction-reordering", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_INSTRUCTION_REORDERING,
  +     &_jss.ionf, ION_INSTRUCTION_REORDERING,
        N_("Instruction reordering (default: off)"), NULL },
     { "ion-check-range-analysis", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_CHECK_RANGE_ANALYSIS,
  +     &_jss.ionf, ION_CHECK_RANGE_ANALYSIS,
        N_("Range analysis checking (default: off)"), NULL },
     { "ion-extra-checks", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_EXTRA_CHECKS,
  +     &_jss.ionf, ION_EXTRA_CHECKS,
        N_("Perform extra dynamic validation checks (default: off)"), NULL },
     { "ion-inlining", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_INLINING,
  +     &_jss.ionf, ION_INLINING,
        N_("Inline methods where possible (default: on)"), NULL },
     { "ion-osr", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_OSR,
  +     &_jss.ionf, ION_OSR,
        N_("On-Stack Replacement(default: on)"), NULL },
     { "ion-limit-script-size", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_LIMIT_SCRIPT_SIZE,
  +     &_jss.ionf, ION_LIMIT_SCRIPT_SIZE,
        N_("Don't compile large scripts(default: on)"), NULL },
  +  { "ion-warmup-threshold", '\0', POPT_ARG_INT,
  +     &_jss.ion_warmup_threshold, 0,
  +     N_("Wait COUNT calls/iterations before compiling"), N_("COUNT") },
     { "ion-regalloc", '\0', POPT_ARG_STRING,
  -     &ion_regalloc, 0,
  -     N_("Specify Ion register allocation <mode>"), N_("<mode>") },
  +     &_jss.ion_regalloc, 0,
  +     N_("Specify Ion register allocation MODE"), N_("MODE") },
     { "ion-eager", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_EAGER,
  +     &_jss.ionf, ION_EAGER,
        N_("Always ion-compile methods (default: on)"), NULL },
     { "ion-offthread-compile", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_OFFTHREAD_COMPILE,
  +     &_jss.ionf, ION_OFFTHREAD_COMPILE,
        N_("Compile scripts off thread (default: on)"), NULL },
     { "ion-parallel-compile", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  -     &_ionf, ION_PARALLEL_COMPILE,
  +     &_jss.ionf, ION_PARALLEL_COMPILE,
        N_("Parallel compilation (deprecated: use --ion-offthread-compile)"), 
NULL },
  +
     POPT_TABLEEND
   };
  -
  -typedef enum rpmjssXFlags_e {
  -    XF_INTERACTIVE           = (1 <<  0),
  -    XF_COMPILE_ONLY          = (1 <<  1),
  -    XF_WARNINGS                      = (1 <<  2),
  -    XF_STRICT                        = (1 <<  3),
  -    XF_DUMP_BYTECODE         = (1 <<  4),
  -    XF_PRINT_TIMING          = (1 <<  5),
  -    XF_NO_CACHE_PER_PROCESS  = (1 <<  6),
  -    XF_CODE_COVERAGE         = (1 <<  7),
  -    XF_PRINT_ALLOC           = (1 <<  8),
  -    XF_NO_ION                        = (1 <<  9),
  -    XF_NO_ASMJS                      = (1 << 10),
  -    XF_NATIVE_REGEXP         = (1 << 11),
  -    XF_UNBOXED_OBJECTS               = (1 << 12),
  -    XF_UNBOXED_ARRAYS                = (1 << 13),
  -    XF_BASELINE                      = (1 << 14),
  -    XF_BASELINE_EAGER                = (1 << 15),
  -    XF_NONWRITABLE_JITCODE   = (1 << 16),
  -    XF_NO_FPU                        = (1 << 17),
  -    XF_NO_SSE3                       = (1 << 18),
  -    XF_NO_SSE4                       = (1 << 19),
  -    XF_NO_AVX                        = (1 << 20),
  -    XF_FUZZING_SAFE          = (1 << 21),
  -    XF_DISABLE_OOM           = (1 << 22),
  -    XF_NO_THREADS            = (1 << 23),
  -    XF_DUMP_ENTRAINED_VARIABLES      = (1 << 24),
  -    XF_NO_GGC                        = (1 << 25),
  -    XF_NO_CGC                        = (1 << 26),
  -    XF_ARM_HWCAP             = (1 << 27),
  -    XF_ARM_SIM_ICACHE_CHECKS = (1 << 28),
  -    XF_MIPS_SIM_ICACHE_CHECKS        = (1 << 29),
  -} rpmjssXFlags;
  -rpmjssXFlags _xf;
  -
  -static int baseline_warmup_threshold;
  -
  -static int available_memory;
  -static int asm_pool_max_offset;
  -static int arm_sim_stop_at;
  -static int mips_sim_stop_at;
  -static int nursery_size;
  -static int gc_zeal;
  -static const char *module_load_path;
  -
   struct poptOption rpmjssOptionsTable[] = {
  -  { "file", 'f', POPT_ARG_STRING,            &Ifile, 0,
  -        N_("File <path> to run"), N_("<path>") },
  -  { "module", 'm', POPT_ARG_STRING,          &Imodule, 0,
  -        N_("Module <path> to run"), N_("<path>") },
  -  { "execute", 'e', POPT_ARG_STRING,         &Icode, 0,
  -        N_("Inline <code> to run"), N_("<code>") },
  -  { "shell", 'i', POPT_BIT_SET,                      &_xf, XF_INTERACTIVE,
  +  { "file", 'f', POPT_ARG_STRING,            &_jss.Ifile, 0,
  +        N_("File PATH to run"), N_("PATH") },
  +  { "module", 'm', POPT_ARG_STRING,          &_jss.Imodule, 0,
  +        N_("Module PATH to run"), N_("PATH") },
  +  { "execute", 'e', POPT_ARG_STRING,         &_jss.Icode, 0,
  +        N_("Inline CODE to run"), N_("CODE") },
  +  { "shell", 'i', POPT_BIT_SET,                      &_jss.xf, 
XF_INTERACTIVE,
           N_("Enter prompt after running code"), NULL },
  -  { "compileonly", 'c', POPT_BIT_SET,                &_xf, XF_COMPILE_ONLY,
  +  { "compileonly", 'c', POPT_BIT_SET,                &_jss.xf, 
XF_COMPILE_ONLY,
           N_("Only compile, don't run (syntax checking mode)"), NULL },
  -  { "warnings", 'w', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,       &_xf, 
XF_WARNINGS,
  +  { "warnings", 'w', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,       &_jss.xf, 
XF_WARNINGS,
           N_("Emit warnings"), NULL },
  -  { "strict", 's', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE, &_xf, XF_STRICT,
  +  { "strict", 's', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE, &_jss.xf, XF_STRICT,
           N_("Check strictness"), NULL },
  -  { "dump-bytecode", 'D', POPT_BIT_SET,              &_xf, XF_DUMP_BYTECODE,
  +  { "dump-bytecode", 'D', POPT_BIT_SET,              &_jss.xf, 
XF_DUMP_BYTECODE,
           N_("Dump bytecode with exec count for all scripts"), NULL },
  -  { "print-timing", 'b', POPT_BIT_SET,               &_xf, XF_PRINT_TIMING,
  +  { "print-timing", 'b', POPT_BIT_SET,               &_jss.xf, 
XF_PRINT_TIMING,
           N_("Dump bytecode with exec count for all scripts"), NULL },
  -  { "js-cache", '\0', POPT_ARG_STRING,               &js_cache, 0,
  -        N_("Enable JS caching in <dir>"), N_("<dir>") },
  -  { "no-js-cache-per-process",'\0', POPT_BIT_SET, &_xf, 
XF_NO_CACHE_PER_PROCESS,
  +  { "js-cache", '\0', POPT_ARG_STRING,               &_jss.cachedir, 0,
  +        N_("Enable JS caching in DIR"), N_("DIR") },
  +  { "no-js-cache-per-process",'\0', POPT_BIT_SET, &_jss.xf, 
XF_NO_CACHE_PER_PROCESS,
           N_("Deactivate per-process caching"), NULL },
  -  { "code-coverage", '\0', POPT_BIT_SET,     &_xf, XF_CODE_COVERAGE,
  +  { "code-coverage", '\0', POPT_BIT_SET,     &_jss.xf, XF_CODE_COVERAGE,
           N_("Enable code coverage insturmentation"), NULL },
  -  { "print-alloc", 'O', POPT_BIT_SET,                &_xf, XF_PRINT_ALLOC,
  +  { "print-alloc", 'O', POPT_BIT_SET,                &_jss.xf, 
XF_PRINT_ALLOC,
           N_("Print no. of allocatsions at exit"), NULL },
  -  { "script", '\0', POPT_ARG_STRING,         &script, 0,
  -        N_("Script <path> to run"), N_("<path>") },
  -  { "scriptArgs", '\0', POPT_ARG_STRING,     &scriptArgs, 0,
  -        N_("Script <path> to run"), N_("<path>") },
  -  { "thread-count", '\0', POPT_ARG_INT,              &thread_count, 0,
  -        N_("Use <count> auxiliary threads"), N_("<count>") },
  +  { "script", '\0', POPT_ARG_STRING,         &_jss.script_path, 0,
  +        N_("Script PATH to run"), N_("PATH") },
  +  { "scriptArgs", '\0', POPT_ARG_STRING,     &_jss.script_args, 0,
  +        N_("Script args to bind as |scriptArgs| in global"), N_("XXX") },
  +  { "thread-count", '\0', POPT_ARG_INT,              &_jss.thread_count, 0,
  +        N_("Use COUNT auxiliary threads"), N_("COUNT") },
  +
  +  { "baseline", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_BASELINE_EAGER,
  +     N_("Enable baseline compiler (default: on)"), NULL },
  +  { "baseline-eager", '\0', POPT_BIT_SET|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_BASELINE_EAGER,
  +     N_("Always baseline-compile methods"), NULL },
  +  { "baseline-warmup-threshold", '\0', POPT_ARG_INT,
  +     &_jss.baseline_warmup_threshold, 0,
  +     N_("Wait COUNT calls/iterations before baseline-compiling"), 
N_("COUNT") },
  +
  +  { "non-writable-jitcode", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_NONWRITABLE_JITCODE,
  +     N_("Allocate JIT code   as non-writable memory"), NULL },
  +  { "fpu", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_FPU,
  +     N_("Assume CPU has a FPU"), NULL },
  +  { "sse3", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_SSE3,
  +     N_("Assume CPU has SSE3 instructions"), NULL },
  +  { "sse4", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_SSE4,
  +     N_("Assume CPU has SSE4 instructions"), NULL },
  +  { "avx", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_AVX,
  +     N_("Assume CPU has AVX instructions"), NULL },
  +  { "fuzzing-safe", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_FUZZING_SAFE,
  +     N_("Don't expose unsafe functions (when fuzzing)"), NULL },
  +  { "disable-oom-functions", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_DISABLE_OOM,
  +     N_("Disable functions that trigger OOM"), NULL },
  +  { "threads", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_THREADS,
  +     N_("Disable helper threads"), NULL },
  +
  +  { "dump-entrained-variables", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_DISABLE_OOM,
  +     N_("Print variables entrained by inner functions"), NULL },
  +
  +  { "ggc", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_GGC,
  +     N_("Disable Generational GC"), NULL },
  +  { "cgc", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_CGC,
  +     N_("Disable Compacting GC"), NULL },
  +  { "incremental-gc", '\0', POPT_BIT_CLR|POPT_ARGFLAG_TOGGLE,
  +     &_jss.xf, XF_NO_INCREMENTAL_GC,
  +     N_("Disable Incremental GC"), NULL },
  +
  +  { "available-memory", '\0', POPT_ARG_INT,  &_jss.available_memory, 0,
  +        N_("Select GC settings based on SIZE-MB"), N_("SIZE-MB") },
  +
  +  { "arm-hwcap", '\0', POPT_ARG_STRING,      &_jss.arm_hwcap, 0,
  +        N_("Specify ARM code generation FEATURES"), N_("FEATURES") },
  +
  +  { "arm-asm-nop-fill", '\0', POPT_ARG_INT,  &_jss.arm_asm_nop_fill, 0,
  +        N_("Insert N NOP instructions in pool"), N_("N") },
  +  { "asm-pool-max-offset", '\0', POPT_ARG_INT,       
&_jss.asm_pool_max_offset, 0,
  +        N_("Max PC-relative OFFSET in pool"), N_("OFFSET") },
  +
  +  { "arm-sim-icache-checks", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_ARM_SIM_ICACHE_CHECKS,
  +     N_("(ARM) Enable icache flush checks"), NULL },
  +  { "arm-sim-stop-at", '\0', POPT_ARG_INT,   &_jss.arm_sim_stop_at, 0,
  +        N_("(ARM) Stop simulator after N instructions"), N_("N") },
  +
  +  { "mips-sim-icache-checks", '\0', POPT_BIT_SET,
  +     &_jss.xf, XF_MIPS_SIM_ICACHE_CHECKS,
  +     N_("(MIPS) Enable icache flush checks"), NULL },
  +  { "mips-sim-stop-at", '\0', POPT_ARG_INT,  &_jss.mips_sim_stop_at, 0,
  +        N_("(MIPS) Stop simulator after N instructions"), N_("N") },
  +
  +  { "nursery-size", '\0', POPT_ARG_INT,              &_jss.nursery_size, 0,
  +        N_("Set nursery SIZE-MB"), N_("SIZE-MB") },
  +  { "gc-zeal", '\0', POPT_ARG_INT,           &_jss.gc_zeal, 0,
  +        N_("Set GC zeal LEVEL"), N_("LEVEL") },
  +
  +  { "module-load-path", '\0', POPT_ARG_STRING,               
&_jss.moduledir, 0,
  +        N_("Load modules from DIR"), N_("DIR") },
   
     { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmjssIPoptTable, 0,
             N_("JS interpreter options:"), NULL },
  @@ -513,7 +518,6 @@
     POPT_AUTOHELP
     POPT_TABLEEND
   };
  -#endif  /* NOTYET */
   
   int rpmMain(int argc, char *argv[], char *envp[])
   {
  @@ -749,12 +753,12 @@
        const char * code = av[i];
        const char * result = NULL;
        rc = mozRun(jss, &result, code, _fn, i);
  -     fprintf(stderr, "<== result(%d) |%s| from |%s|\n", rc, result, code);
  +     fprintf(stderr, "<== rc(%d): |%s| from |%s|\n", rc, result, code);
        result = _free(result);
        if (!strcasecmp(code, "quit"))
            break;
       }
  -    rc = 0;
  +    rc = 0;  // XXX
   
       mozFini(jss);
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmjss.h
  ============================================================================
  $ cvs diff -u -r1.1.2.2 -r1.1.2.3 rpmjss.h
  --- rpm/rpmio/rpmjss.h        24 Jun 2017 19:09:35 -0000      1.1.2.2
  +++ rpm/rpmio/rpmjss.h        9 Jul 2017 09:42:41 -0000       1.1.2.3
  @@ -50,6 +50,61 @@
       RPMJSS_FLAGS_GLOBAL              = (1<<31),
   };
   
  +typedef enum rpmjssIonFlags_e {
  +    ION_SHARED_STUBS         = (1 <<  0),
  +    ION_SCALAR_REPLACEMENT   = (1 <<  1),
  +    ION_GVN                  = (1 <<  2),
  +    ION_LICM                 = (1 <<  3),
  +    ION_EDGECASE_ANALYSIS    = (1 <<  4),
  +    ION_PGO                  = (1 <<  5),
  +    ION_RANGE_ANALYSIS               = (1 <<  6),
  +    ION_SINCOS                       = (1 <<  7),
  +    ION_SINK                 = (1 <<  8),
  +    ION_LOOP_UNROLLING               = (1 <<  9),
  +    ION_INSTRUCTION_REORDERING       = (1 << 10),
  +    ION_CHECK_RANGE_ANALYSIS = (1 << 11),
  +    ION_EXTRA_CHECKS         = (1 << 12),
  +    ION_INLINING             = (1 << 13),
  +    ION_OSR                  = (1 << 14),
  +    ION_LIMIT_SCRIPT_SIZE    = (1 << 15),
  +    ION_EAGER                        = (1 << 16),
  +    ION_OFFTHREAD_COMPILE    = (1 << 17),
  +    ION_PARALLEL_COMPILE     = (1 << 18),
  +} rpmjssIonFlags;
  +
  +typedef enum rpmjssXFlags_e {
  +    XF_INTERACTIVE           = (1 <<  0),
  +    XF_COMPILE_ONLY          = (1 <<  1),
  +    XF_WARNINGS                      = (1 <<  2),
  +    XF_STRICT                        = (1 <<  3),
  +    XF_DUMP_BYTECODE         = (1 <<  4),
  +    XF_PRINT_TIMING          = (1 <<  5),
  +    XF_NO_CACHE_PER_PROCESS  = (1 <<  6),
  +    XF_CODE_COVERAGE         = (1 <<  7),
  +    XF_PRINT_ALLOC           = (1 <<  8),
  +    XF_NO_ION                        = (1 <<  9),
  +    XF_NO_ASMJS                      = (1 << 10),
  +    XF_NATIVE_REGEXP         = (1 << 11),
  +    XF_UNBOXED_OBJECTS               = (1 << 12),
  +    XF_UNBOXED_ARRAYS                = (1 << 13),
  +    XF_BASELINE                      = (1 << 14),
  +    XF_BASELINE_EAGER                = (1 << 15),
  +    XF_NONWRITABLE_JITCODE   = (1 << 16),
  +    XF_NO_FPU                        = (1 << 17),
  +    XF_NO_SSE3                       = (1 << 18),
  +    XF_NO_SSE4                       = (1 << 19),
  +    XF_NO_AVX                        = (1 << 20),
  +    XF_FUZZING_SAFE          = (1 << 21),
  +    XF_DISABLE_OOM           = (1 << 22),
  +    XF_NO_THREADS            = (1 << 23),
  +    XF_DUMP_ENTRAINED_VARIABLES      = (1 << 24),
  +    XF_NO_GGC                        = (1 << 25),
  +    XF_NO_CGC                        = (1 << 26),
  +    XF_NO_INCREMENTAL_GC     = (1 << 27),
  +    XF_ARM_SIM_ICACHE_CHECKS = (1 << 28),
  +    XF_MIPS_SIM_ICACHE_CHECKS        = (1 << 29),
  +} rpmjssXFlags;
  +
   typedef      struct JSIO_s * JSIO_t;
   struct JSIO_s {
       void (*mozFini)  (rpmjss jss);
  @@ -63,13 +118,44 @@
   extern JSIO_t mozjs24;
   extern JSIO_t mozjs31;
   extern JSIO_t mozjs38;
  +#ifdef       NOTYET
   extern JSIO_t mozjs45;
  +#endif
   
   struct rpmjss_s {
       struct rpmioItem_s _item;        /*!< usage mutex and pool identifier. */
       uint32_t flags;          /*!< JSOPTION_FOO in 0xffff bits */
       JSIO_t jsio;
       void * I;                        /*!< JS interpreter {rt, cx, globalObj} 
*/
  +
  +    const char *Ifile;
  +    const char *Imodule;
  +    const char *Icode;
  +    const char *cachedir;
  +    const char *moduledir;
  +
  +    const char *script_path;
  +    const char *script_args;
  +
  +    const char * ion_regalloc;
  +
  +    const char * arm_hwcap;
  +
  +    int thread_count;
  +
  +    int ion_warmup_threshold;
  +    int baseline_warmup_threshold;
  +
  +    int available_memory;
  +    int arm_asm_nop_fill;
  +    int asm_pool_max_offset;
  +    int arm_sim_stop_at;
  +    int mips_sim_stop_at;
  +    int nursery_size;
  +    int gc_zeal;
  +
  +    rpmjssXFlags xf;
  +    rpmjssIonFlags ionf;
   };
   
   struct rpmjss_s _rpmjss;
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to