nashorn/docs/DEVELOPER_README
author sla
Wed, 08 Jan 2014 08:34:02 +0100
changeset 22485 598d024a4a49
parent 19632 c9d704ad422e
child 24766 7b54e2362c6c
permissions -rw-r--r--
8031376: TraceClassLoading expects there to be a (Java) caller when you load a class with the bootstrap class loader Reviewed-by: sla, dholmes Contributed-by: jeremymanson@google.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     1
This document describes system properties that are used for internal
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     2
debugging and instrumentation purposes, along with the system loggers,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     3
which are used for the same thing.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     4
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     5
This document is intended as a developer resource, and it is not
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     6
needed as Nashorn documentation for normal usage. Flags and system
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     7
properties described herein are subject to change without notice.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     8
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     9
=====================================
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    10
1. System properties used internally
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    11
=====================================
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    12
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    13
This documentation of the system property flags assume that the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    14
default value of the flag is false, unless otherwise specified.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    15
16533
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    16
SYSTEM PROPERTY: -Dnashorn.args=<string>
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    17
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    18
This property takes as its value a space separated list of Nashorn
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    19
command line options that should be passed to Nashorn. This might be
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    20
useful in environments where it is hard to tell how a nashorn.jar is
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    21
launched.
16533
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    22
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    23
Example:
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    24
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    25
> java -Dnashorn.args="--lazy-complation --log=compiler" large-java-app-with-nashorn.jar 
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    26
> ant -Dnashorn.args="--log=codegen" antjob
6ae708677f92 8010706: -Dnashorn.args system property to create command lines to wrapped nashorn.jar:s
lagergren
parents: 16259
diff changeset
    27
16152
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    28
SYSTEM PROPERTY: -Dnashorn.unstable.relink.threshold=x
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    29
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    30
This property controls how many call site misses are allowed before a 
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    31
callsite is relinked with "apply" semantics to never change again. 
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    32
In the case of megamorphic callsites, this is necessary, or the 
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    33
program would spend all its time swapping out callsite targets. Dynalink 
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    34
has a default value (currently 8 relinks) for this property if it 
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    35
is not explicitly set.
ea430b83d74d 8005789: Forgot to document -Dnashorn.unstable.relink.threshold
lagergren
parents: 16147
diff changeset
    36
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    37
16227
1bafb74d17b2 8007956: Wrong or obsolete system properties in docs/DEVELOPER_README
hannesw
parents: 16201
diff changeset
    38
SYSTEM PROPERTY: -Dnashorn.compiler.splitter.threshold=x
16168
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    39
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    40
This will change the node weight that requires a subgraph of the IR to
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    41
be split into several classes in order not to run out of bytecode space.
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    42
The default value is 0x8000 (32768).
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    43
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
    44
16227
1bafb74d17b2 8007956: Wrong or obsolete system properties in docs/DEVELOPER_README
hannesw
parents: 16201
diff changeset
    45
SYSTEM PROPERTY: -Dnashorn.compiler.intarithmetic
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    46
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    47
(and integer arithmetic in general)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    48
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    49
<currently disabled - this is being refactored for update releases> 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    50
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    51
Arithmetic operations in Nashorn (except bitwise ones) typically
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    52
coerce the operands to doubles (as per the JavaScript spec). To switch
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    53
this off and remain in integer mode, for example for "var x = a&b; var
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    54
y = c&d; var z = x*y;", use this flag. This will force the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    55
multiplication of variables that are ints to be done with the IMUL
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    56
bytecode and the result "z" to become an int.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    57
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    58
WARNING: Note that is is experimental only to ensure that type support
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    59
exists for all primitive types. The generated code is unsound. This
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    60
will be the case until we do optimizations based on it. There is a CR
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    61
in Nashorn to do better range analysis, and ensure that this is only
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    62
done where the operation can't overflow into a wider type. Currently
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    63
no overflow checking is done, so at the moment, until range analysis
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    64
has been completed, this option is turned off.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    65
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    66
We've experimented by using int arithmetic for everything and putting
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    67
overflow checks afterwards, which would recompute the operation with
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    68
the correct precision, but have yet to find a configuration where this
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    69
is faster than just using doubles directly, even if the int operation
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    70
does not overflow. Getting access to a JVM intrinsic that does branch
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    71
on overflow would probably alleviate this.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    72
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    73
The future:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    74
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    75
We are transitioning to an optimistic type system that uses int
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    76
arithmetic everywhere until proven wrong. The problem here is mostly
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    77
catch an overflow exception and rolling back the state to a new method
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    78
with less optimistic assumptions for an operation at a particular
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    79
program point. This will most likely not be in the Java 8.0 release
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    80
but likely end up in an update release
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    81
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    82
For Java 8, several java.lang.Math methods like addExact, subExact and
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    83
mulExact are available to help us. Experiments intrinsifying these
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    84
show a lot of promise, and we have devised a system that basically
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    85
does on stack replacement with exceptions in bytecode to revert
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    86
erroneous assumptions. An explanation of how this works and what we
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    87
are doing can be found here:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    88
http://www.slideshare.net/lagergren/lagergren-jvmls2013final
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    89
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    90
Experiments with this show significant ~x2-3 performance increases on
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    91
pretty much everything, provided that optimistic assumptions don't
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    92
fail much. It will affect warmup time negatively, depending on how
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    93
many erroneous too optimistic assumptions are placed in the code at
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    94
compile time. We don't think this will be much of an issue.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    95
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    96
For example for a small benchmark that repeatedly executes this
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    97
method taken from the Crypto Octane benchmark 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    98
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
    99
function am3(i,x,w,j,c,n) {
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   100
  var this_array = this.array;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   101
  var w_array    = w.array;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   102
  var xl = x&0x3fff, xh = x>>14;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   103
  while(--n >= 0) {
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   104
    var l = this_array[i]&0x3fff;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   105
    var h = this_array[i++]>>14;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   106
    var m = xh*l+h*xl;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   107
    l = xl*l+((m&0x3fff)<<14)+w_array[j]+c;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   108
    c = (l>>28)+(m>>14)+xh*h;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   109
    w_array[j++] = l&0xfffffff;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   110
  }
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   111
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   112
  return c;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   113
}
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   114
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   115
The performance increase more than doubles. We are also working hard
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   116
with the code generation team in the Java Virtual Machine to fix
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   117
things that are lacking in invokedynamic performance, which is another
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   118
area where a lot of ongoing performance work takes place
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   119
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   120
"Pessimistic" bytecode for am3, guaranteed to be semantically correct:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   121
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   122
// access flags 0x9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   123
  public static am3(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   124
   L0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   125
    LINENUMBER 12 L0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   126
    ALOAD 0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   127
    INVOKEDYNAMIC dyn:getProp|getElem|getMethod:array(Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   128
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   129
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   130
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   131
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   132
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   133
    ASTORE 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   134
   L1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   135
    LINENUMBER 13 L1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   136
    ALOAD 3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   137
    INVOKEDYNAMIC dyn:getProp|getElem|getMethod:array(Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   138
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   139
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   140
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   141
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   142
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   143
    ASTORE 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   144
   L2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   145
    LINENUMBER 14 L2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   146
    ALOAD 2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   147
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (Ljava/lang/Object;)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   148
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   149
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   150
    ISTORE 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   151
    ALOAD 2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   152
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (Ljava/lang/Object;)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   153
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   154
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   155
    ISTORE 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   156
   L3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   157
    LINENUMBER 15 L3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   158
    GOTO L4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   159
   L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   160
    LINENUMBER 16 L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   161
   FRAME FULL [java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Double T java/lang/Object java/lang/Object I I] []
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   162
    ALOAD 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   163
    ALOAD 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   164
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;Ljava/lang/Object;)I [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   165
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   166
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   167
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   168
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   169
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   170
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   171
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   172
    INVOKESTATIC java/lang/Integer.valueOf (I)Ljava/lang/Integer;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   173
    ASTORE 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   174
   L6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   175
    LINENUMBER 17 L6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   176
    ALOAD 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   177
    ALOAD 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   178
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toNumber (Ljava/lang/Object;)D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   179
    DUP2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   180
    DCONST_1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   181
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   182
    INVOKESTATIC java/lang/Double.valueOf (D)Ljava/lang/Double;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   183
    ASTORE 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   184
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;D)I [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   185
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   186
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   187
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   188
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   189
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   190
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   191
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   192
    ISTORE 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   193
   L7
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   194
    LINENUMBER 18 L7
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   195
    ILOAD 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   196
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   197
    ALOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   198
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toNumber (Ljava/lang/Object;)D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   199
    DMUL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   200
    ILOAD 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   201
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   202
    ILOAD 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   203
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   204
    DMUL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   205
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   206
    DSTORE 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   207
   L8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   208
    LINENUMBER 19 L8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   209
    ILOAD 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   210
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   211
    ALOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   212
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toNumber (Ljava/lang/Object;)D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   213
    DMUL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   214
    DLOAD 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   215
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (D)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   216
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   217
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   218
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   219
    ISHL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   220
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   221
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   222
    ALOAD 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   223
    ALOAD 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   224
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   225
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   226
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   227
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   228
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   229
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   230
    INVOKEDYNAMIC ADD:ODO_D(DLjava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   231
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   232
      jdk/nashorn/internal/runtime/linker/Bootstrap.runtimeBootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   233
      // arguments: none
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   234
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   235
    ALOAD 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   236
    INVOKEDYNAMIC ADD:OOO_I(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   237
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   238
      jdk/nashorn/internal/runtime/linker/Bootstrap.runtimeBootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   239
      // arguments: none
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   240
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   241
    ASTORE 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   242
   L9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   243
    LINENUMBER 20 L9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   244
    ALOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   245
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (Ljava/lang/Object;)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   246
    BIPUSH 28
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   247
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   248
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   249
    DLOAD 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   250
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (D)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   251
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   252
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   253
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   254
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   255
    ILOAD 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   256
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   257
    ILOAD 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   258
    I2D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   259
    DMUL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   260
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   261
    INVOKESTATIC java/lang/Double.valueOf (D)Ljava/lang/Double;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   262
    ASTORE 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   263
   L10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   264
    LINENUMBER 21 L10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   265
    ALOAD 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   266
    ALOAD 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   267
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toNumber (Ljava/lang/Object;)D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   268
    DUP2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   269
    DCONST_1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   270
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   271
    INVOKESTATIC java/lang/Double.valueOf (D)Ljava/lang/Double;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   272
    ASTORE 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   273
    ALOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   274
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toInt32 (Ljava/lang/Object;)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   275
    LDC 268435455
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   276
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   277
    INVOKEDYNAMIC dyn:setElem|setProp(Ljava/lang/Object;DI)V [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   278
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   279
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   280
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   281
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   282
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   283
   L4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   284
   FRAME FULL [java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Object java/lang/Object T java/lang/Object java/lang/Object I I] []
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   285
    ALOAD 6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   286
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.toNumber (Ljava/lang/Object;)D
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   287
    LDC -1.0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   288
    DADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   289
    DUP2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   290
    INVOKESTATIC java/lang/Double.valueOf (D)Ljava/lang/Double;
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   291
    ASTORE 6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   292
    DCONST_0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   293
    DCMPL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   294
    IFGE L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   295
   L11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   296
    LINENUMBER 24 L11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   297
    ALOAD 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   298
    ARETURN
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   299
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   300
"Optimistic" bytecode that requires invalidation on e.g overflow. Factor
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   301
x2-3 speedup:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   302
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   303
public static am3(Ljava/lang/Object;IILjava/lang/Object;III)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   304
   L0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   305
    LINENUMBER 12 L0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   306
    ALOAD 0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   307
    INVOKEDYNAMIC dyn:getProp|getElem|getMethod:array(Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   308
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   309
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   310
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   311
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   312
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   313
    ASTORE 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   314
   L1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   315
    LINENUMBER 13 L1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   316
    ALOAD 3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   317
    INVOKEDYNAMIC dyn:getProp|getElem|getMethod:array(Ljava/lang/Object;)Ljava/lang/Object; [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   318
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   319
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   320
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   321
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   322
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   323
    ASTORE 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   324
   L2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   325
    LINENUMBER 14 L2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   326
    ILOAD 2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   327
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   328
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   329
    ISTORE 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   330
    ILOAD 2
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   331
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   332
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   333
    ISTORE 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   334
   L3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   335
    LINENUMBER 15 L3
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   336
    GOTO L4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   337
   L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   338
    LINENUMBER 16 L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   339
   FRAME FULL [java/lang/Object I I java/lang/Object I I I T java/lang/Object java/lang/Object I I] []
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   340
    ALOAD 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   341
    ILOAD 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   342
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;I)I [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   343
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   344
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   345
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   346
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   347
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   348
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   349
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   350
    ISTORE 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   351
   L6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   352
    LINENUMBER 17 L6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   353
    ALOAD 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   354
    ILOAD 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   355
    DUP
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   356
    ICONST_1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   357
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   358
    ISTORE 1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   359
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;I)I [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   360
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   361
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   362
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   363
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   364
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   365
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   366
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   367
    ISTORE 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   368
   L7
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   369
    LINENUMBER 18 L7
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   370
    ILOAD 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   371
    ILOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   372
    BIPUSH 8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   373
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.mulExact (III)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   374
    ILOAD 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   375
    ILOAD 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   376
    BIPUSH 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   377
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.mulExact (III)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   378
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   379
    ISTORE 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   380
   L8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   381
    LINENUMBER 19 L8
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   382
    ILOAD 10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   383
    ILOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   384
    BIPUSH 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   385
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.mulExact (III)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   386
    ILOAD 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   387
    SIPUSH 16383
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   388
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   389
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   390
    ISHL
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   391
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   392
    ALOAD 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   393
    ILOAD 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   394
    INVOKEDYNAMIC dyn:getElem|getProp|getMethod(Ljava/lang/Object;I)I [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   395
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   396
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   397
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   398
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   399
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   400
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   401
    ILOAD 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   402
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   403
    ISTORE 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   404
   L9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   405
    LINENUMBER 20 L9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   406
    ILOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   407
    BIPUSH 28
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   408
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   409
    ILOAD 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   410
    BIPUSH 14
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   411
    ISHR
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   412
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   413
    ILOAD 11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   414
    ILOAD 13
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   415
    BIPUSH 21
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   416
    INVOKESTATIC jdk/nashorn/internal/runtime/JSType.mulExact (III)I
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   417
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   418
    ISTORE 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   419
   L10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   420
    LINENUMBER 21 L10
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   421
    ALOAD 9
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   422
    ILOAD 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   423
    DUP
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   424
    ICONST_1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   425
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   426
    ISTORE 4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   427
    ILOAD 12
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   428
    LDC 268435455
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   429
    IAND
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   430
    INVOKEDYNAMIC dyn:setElem|setProp(Ljava/lang/Object;II)V [
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   431
      // handle kind 0x6 : INVOKESTATIC
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   432
      jdk/nashorn/internal/runtime/linker/Bootstrap.bootstrap((Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;I)Ljava/lang/invoke/CallSite;)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   433
      // arguments:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   434
      0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   435
    ]
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   436
   L4
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   437
   FRAME SAME
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   438
    ILOAD 6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   439
    ICONST_M1
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   440
    IADD
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   441
    DUP
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   442
    ISTORE 6
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   443
    ICONST_0
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   444
    IF_ICMPGE L5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   445
   L11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   446
    LINENUMBER 24 L11
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   447
    ILOAD 5
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   448
    IRETURN
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   449
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   450
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   451
SYSTEM PROPERTY: -Dnashorn.codegen.debug, -Dnashorn.codegen.debug.trace=<x>
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   452
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   453
See the description of the codegen logger below.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   454
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   455
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   456
SYSTEM_PROPERTY: -Dnashorn.fields.debug
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   457
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   458
See the description on the fields logger below.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   459
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   460
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   461
SYSTEM PROPERTY: -Dnashorn.fields.dual
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   462
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   463
When this property is true, Nashorn will attempt to use primitive
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   464
fields for AccessorProperties (currently just AccessorProperties, not
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   465
spill properties). Memory footprint for script objects will increase,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   466
as we need to maintain both a primitive field (a long) as well as an
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   467
Object field for the property value. Ints are represented as the 32
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   468
low bits of the long fields. Doubles are represented as the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   469
doubleToLongBits of their value. This way a single field can be used
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   470
for all primitive types. Packing and unpacking doubles to their bit
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   471
representation is intrinsified by the JVM and extremely fast.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   472
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   473
While dual fields in theory runs significantly faster than Object
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   474
fields due to reduction of boxing and memory allocation overhead,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   475
there is still work to be done to make this a general purpose
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   476
solution. Research is ongoing.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   477
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   478
In the future, this might complement or be replaced by experimental
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   479
feature sun.misc.TaggedArray, which has been discussed on the mlvm
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   480
mailing list. TaggedArrays are basically a way to share data space
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   481
between primitives and references, and have the GC understand this.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   482
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   483
As long as only primitive values are written to the fields and enough
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   484
type information exists to make sure that any reads don't have to be
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   485
uselessly boxed and unboxed, this is significantly faster than the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   486
standard "Objects only" approach that currently is the default. See
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   487
test/examples/dual-fields-micro.js for an example that runs twice as
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   488
fast with dual fields as without them. Here, the compiler, can
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   489
determine that we are dealing with numbers only throughout the entire
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   490
property life span of the properties involved.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   491
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   492
If a "real" object (not a boxed primitive) is written to a field that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   493
has a primitive representation, its callsite is relinked and an Object
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   494
field is used forevermore for that particular field in that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   495
PropertyMap and its children, even if primitives are later assigned to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   496
it.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   497
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   498
As the amount of compile time type information is very small in a
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   499
dynamic language like JavaScript, it is frequently the case that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   500
something has to be treated as an object, because we don't know any
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   501
better. In reality though, it is often a boxed primitive is stored to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   502
an AccessorProperty. The fastest way to handle this soundly is to use
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   503
a callsite typecheck and avoid blowing the field up to an Object. We
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   504
never revert object fields to primitives. Ping-pong:ing back and forth
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   505
between primitive representation and Object representation would cause
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   506
fatal performance overhead, so this is not an option.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   507
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   508
For a general application the dual fields approach is still slower
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   509
than objects only fields in some places, about the same in most cases,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   510
and significantly faster in very few. This is due the program using
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   511
primitives, but we still can't prove it. For example "local_var a =
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   512
call(); field = a;" may very well write a double to the field, but the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   513
compiler dare not guess a double type if field is a local variable,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   514
due to bytecode variables being strongly typed and later non
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   515
interchangeable. To get around this, the entire method would have to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   516
be replaced and a continuation retained to restart from. We believe
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   517
that the next steps we should go through are instead:
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   518
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   519
1) Implement method specialization based on callsite, as it's quite
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   520
frequently the case that numbers are passed around, but currently our
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   521
function nodes just have object types visible to the compiler. For
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   522
example "var b = 17; func(a,b,17)" is an example where two parameters
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   523
can be specialized, but the main version of func might also be called
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   524
from another callsite with func(x,y,"string").
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   525
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   526
2) This requires lazy jitting as the functions have to be specialized
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   527
per callsite.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   528
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   529
Even though "function square(x) { return x*x }" might look like a
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   530
trivial function that can always only take doubles, this is not
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   531
true. Someone might have overridden the valueOf for x so that the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   532
toNumber coercion has side effects. To fulfil JavaScript semantics,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   533
the coercion has to run twice for both terms of the multiplication
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   534
even if they are the same object. This means that call site
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   535
specialization is necessary, not parameter specialization on the form
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   536
"function square(x) { var xd = (double)x; return xd*xd; }", as one
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   537
might first think.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   538
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   539
Generating a method specialization for any variant of a function that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   540
we can determine by types at compile time is a combinatorial explosion
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   541
of byte code (try it e.g. on all the variants of am3 in the Octane
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   542
benchmark crypto.js). Thus, this needs to be lazy
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   543
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   544
3) Optimistic callsite writes, something on the form
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   545
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   546
x = y; //x is a field known to be a primitive. y is only an object as
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   547
far as we can tell
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   548
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   549
turns into
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   550
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   551
try {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   552
  x = (int)y;
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   553
} catch (X is not an integer field right now | ClassCastException e) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   554
  x = y;
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   555
}
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   556
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   557
Mini POC shows that this is the key to a lot of dual field performance
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   558
in seemingly trivial micros where one unknown object, in reality
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   559
actually a primitive, foils it for us. Very common pattern. Once we
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   560
are "all primitives", dual fields runs a lot faster than Object fields
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   561
only.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   562
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   563
We still have to deal with objects vs primitives for local bytecode
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   564
slots, possibly through code copying and versioning.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   565
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   566
The Future:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   567
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   568
We expect the usefulness of dual fields to increase significantly
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   569
after the optimistic type system described in the section on 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   570
integer arithmetic above is implemented.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   571
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   572
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   573
SYSTEM PROPERTY: -Dnashorn.compiler.symbol.trace=[<x>[,*]], 
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   574
  -Dnashorn.compiler.symbol.stacktrace=[<x>[,*]]
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   575
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   576
When this property is set, creation and manipulation of any symbol
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   577
named "x" will show information about when the compiler changes its
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   578
type assumption, bytecode local variable slot assignment and other
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   579
data. This is useful if, for example, a symbol shows up as an Object,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   580
when you believe it should be a primitive. Usually there is an
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   581
explanation for this, for example that it exists in the global scope
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   582
and type analysis has to be more conservative. 
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   583
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   584
Several symbols names to watch can be specified by comma separation.
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   585
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   586
If no variable name is specified (and no equals sign), all symbols
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   587
will be watched
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   588
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   589
By using "stacktrace" instead of or together with "trace", stack
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   590
traces will be displayed upon symbol changes according to the same
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   591
semantics.
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   592
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   593
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   594
SYSTEM PROPERTY: -Dnashorn.lexer.xmlliterals
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   595
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   596
If this property it set, it means that the Lexer should attempt to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   597
parse XML literals, which would otherwise generate syntax
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   598
errors. Warning: there are currently no unit tests for this
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   599
functionality.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   600
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   601
XML literals, when this is enabled, end up as standard LiteralNodes in
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   602
the IR.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   603
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   604
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   605
SYSTEM_PROPERTY: -Dnashorn.debug
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   606
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   607
If this property is set to true, Nashorn runs in Debug mode. Debug
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   608
mode is slightly slower, as for example statistics counters are enabled
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   609
during the run. Debug mode makes available a NativeDebug instance
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   610
called "Debug" in the global space that can be used to print property
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   611
maps and layout for script objects, as well as a "dumpCounters" method
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   612
that will print the current values of the previously mentioned stats
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   613
counters.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   614
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   615
These functions currently exists for Debug:
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   616
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   617
"map" - print(Debug.map(x)) will dump the PropertyMap for object x to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   618
stdout (currently there also exist functions called "embedX", where X
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   619
is a value from 0 to 3, that will dump the contents of the embed pool
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   620
for the first spill properties in any script object and "spill", that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   621
will dump the contents of the growing spill pool of spill properties
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   622
in any script object. This is of course subject to change without
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   623
notice, should we change the script object layout.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   624
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   625
"methodHandle" - this method returns the method handle that is used
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   626
for invoking a particular script function.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   627
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   628
"identical" - this method compares two script objects for reference
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   629
equality. It is a == Java comparison
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   630
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   631
"dumpCounters" - will dump the debug counters' current values to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   632
stdout.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   633
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   634
Currently we count number of ScriptObjects in the system, number of
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   635
Scope objects in the system, number of ScriptObject listeners added,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   636
removed and dead (without references).
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   637
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   638
We also count number of ScriptFunctions, ScriptFunction invocations
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   639
and ScriptFunction allocations.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   640
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   641
Furthermore we count PropertyMap statistics: how many property maps
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   642
exist, how many times were property maps cloned, how many times did
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   643
the property map history cache hit, prevent new allocations, how many
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   644
prototype invalidations were done, how many time the property map
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   645
proto cache hit.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   646
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   647
Finally we count callsite misses on a per callsite bases, which occur
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   648
when a callsite has to be relinked, due to a previous assumption of
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   649
object layout being invalidated.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   650
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   651
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   652
SYSTEM PROPERTY: -Dnashorn.methodhandles.debug,
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   653
-Dnashorn.methodhandles.debug=create
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   654
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   655
If this property is enabled, each MethodHandle related call that uses
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   656
the java.lang.invoke package gets its MethodHandle intercepted and an
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   657
instrumentation printout of arguments and return value appended to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   658
it. This shows exactly which method handles are executed and from
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   659
where. (Also MethodTypes and SwitchPoints). This can be augmented with
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   660
more information, for example, instance count, by subclassing or
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   661
further extending the TraceMethodHandleFactory implementation in
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   662
MethodHandleFactory.java.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   663
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   664
If the property is specialized with "=create" as its option,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   665
instrumentation will be shown for method handles upon creation time
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   666
rather than at runtime usage.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   667
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   668
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   669
SYSTEM PROPERTY: -Dnashorn.methodhandles.debug.stacktrace
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   670
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   671
This does the same as nashorn.methodhandles.debug, but when enabled
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   672
also dumps the stack trace for every instrumented method handle
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   673
operation. Warning: This is enormously verbose, but provides a pretty
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   674
decent "grep:able" picture of where the calls are coming from.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   675
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   676
See the description of the codegen logger below for a more verbose
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   677
description of this option
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   678
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   679
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   680
SYSTEM PROPERTY: -Dnashorn.scriptfunction.specialization.disable
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   681
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   682
There are several "fast path" implementations of constructors and
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   683
functions in the NativeObject classes that, in their original form,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   684
take a variable amount of arguments. Said functions are also declared
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   685
to take Object parameters in their original form, as this is what the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   686
JavaScript specification mandates.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   687
However, we often know quite a lot more at a callsite of one of these
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   688
functions. For example, Math.min is called with a fixed number (2) of
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   689
integer arguments. The overhead of boxing these ints to Objects and
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   690
folding them into an Object array for the generic varargs Math.min
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   691
function is an order of magnitude slower than calling a specialized
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   692
implementation of Math.min that takes two integers. Specialized
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   693
functions and constructors are identified by the tag
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   694
@SpecializedFunction and @SpecializedConstructor in the Nashorn
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   695
code. The linker will link in the most appropriate (narrowest types,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   696
right number of types and least number of arguments) specialization if
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   697
specializations are available.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   698
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   699
Every ScriptFunction may carry specializations that the linker can
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   700
choose from. This framework will likely be extended for user defined
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   701
functions. The compiler can often infer enough parameter type info
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   702
from callsites for in order to generate simpler versions with less
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   703
generic Object types. This feature depends on future lazy jitting, as
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   704
there tend to be many calls to user defined functions, some where the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   705
callsite can be specialized, some where we mostly see object
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   706
parameters even at the callsite.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   707
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   708
If this system property is set to true, the linker will not attempt to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   709
use any specialized function or constructor for native objects, but
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   710
just call the generic one.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   711
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   712
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   713
SYSTEM PROPERTY: -Dnashorn.tcs.miss.samplePercent=<x>
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   714
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   715
When running with the trace callsite option (-tcs), Nashorn will count
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   716
and instrument any callsite misses that require relinking. As the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   717
number of relinks is large and usually produces a lot of output, this
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   718
system property can be used to constrain the percentage of misses that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   719
should be logged. Typically this is set to 1 or 5 (percent). 1% is the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   720
default value.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   721
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   722
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   723
SYSTEM_PROPERTY: -Dnashorn.profilefile=<filename>
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   724
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   725
When running with the profile callsite options (-pcs), Nashorn will
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   726
dump profiling data for all callsites to stderr as a shutdown hook. To
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   727
instead redirect this to a file, specify the path to the file using
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   728
this system property.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   729
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   730
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   731
SYSTEM_PROPERTY: -Dnashorn.regexp.impl=[jdk|joni]
16259
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   732
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   733
This property defines the regular expression engine to be used by
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   734
Nashorn. Set this flag to "jdk" to get an implementation based on the
16259
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   735
JDK's java.util.regex package. Set this property to "joni" to install
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   736
an implementation based on Joni, the regular expression engine used by
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   737
the JRuby project. The default value for this flag is "joni"
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   738
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   739
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   740
SYSTEM PROPERTY: -Dnashorn.time
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   741
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   742
This enables timers for various phases of script compilation. The timers
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   743
will be dumped when the Nashorn process exits. We see a percentage value
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   744
of how much time was spent not executing bytecode (i.e. compilation and
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   745
internal tasks) at the end of the report. 
16259
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   746
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   747
Here is an example:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   748
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   749
[JavaScript Parsing]    61  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   750
[Constant Folding]      11  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   751
[Control Flow Lowering] 26  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   752
[Type Attribution]      81  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   753
[Range Analysis]        0  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   754
[Code Splitting]        29  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   755
[Type Finalization]     19  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   756
[Bytecode Generation]   189  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   757
[Code Installation]     7  ms
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   758
Total runtime: 508 ms (Non-runtime: 423 ms [83%])
16259
bb504280c322 8006028: Integrate Joni regexp engine with Nashorn
hannesw
parents: 16227
diff changeset
   759
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   760
===============
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   761
2. The loggers.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   762
===============
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   763
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   764
It is very simple to create your own logger. Use the DebugLogger class
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   765
and give the subsystem name as a constructor argument.
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   766
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   767
The Nashorn loggers can be used to print per-module or per-subsystem
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   768
debug information with different levels of verbosity. The loggers for
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   769
a given subsystem are available are enabled by using
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   770
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   771
--log=<systemname>[:<level>]
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   772
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   773
on the command line.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   774
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   775
Here <systemname> identifies the name of the subsystem to be logged
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   776
and the optional colon and level argument is a standard
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   777
java.util.logging.Level name (severe, warning, info, config, fine,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   778
finer, finest). If the level is left out for a particular subsystem,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   779
it defaults to "info". Any log message logged as the level or a level
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   780
that is more important will be output to stderr by the logger.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   781
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   782
Several loggers can be enabled by a single command line option, by
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   783
putting a comma after each subsystem/level tuple (or each subsystem if
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   784
level is unspecified). The --log option can also be given multiple
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   785
times on the same command line, with the same effect.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   786
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   787
For example: --log=codegen,fields:finest is equivalent to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   788
--log=codegen:info --log=fields:finest
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   789
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   790
The subsystems that currently support logging are:
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   791
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   792
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   793
* compiler
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   794
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   795
The compiler is in charge of turning source code and function nodes
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   796
into byte code, and installs the classes into a class loader
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   797
controlled from the Context. Log messages are, for example, about
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   798
things like new compile units being allocated. The compiler has global
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   799
settings that all the tiers of codegen (e.g. Lower and CodeGenerator)
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   800
use.s
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   801
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   802
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   803
* codegen
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   804
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   805
The code generator is the emitter stage of the code pipeline, and
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   806
turns the lowest tier of a FunctionNode into bytecode. Codegen logging
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   807
shows byte codes as they are being emitted, line number information
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   808
and jumps. It also shows the contents of the bytecode stack prior to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   809
each instruction being emitted. This is a good debugging aid. For
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   810
example:
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   811
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   812
[codegen] #41                       line:2 (f)_afc824e 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   813
[codegen] #42                           load symbol x slot=2 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   814
[codegen] #43  {1:O}                    load int 0 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   815
[codegen] #44  {2:I O}                  dynamic_runtime_call GT:ZOI_I args=2 returnType=boolean 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   816
[codegen] #45                              signature (Ljava/lang/Object;I)Z 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   817
[codegen] #46  {1:Z}                    ifeq  ternary_false_5402fe28 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   818
[codegen] #47                           load symbol x slot=2 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   819
[codegen] #48  {1:O}                    goto ternary_exit_107c1f2f 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   820
[codegen] #49                       ternary_false_5402fe28 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   821
[codegen] #50                           load symbol x slot=2 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   822
[codegen] #51  {1:O}                    convert object -> double 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   823
[codegen] #52  {1:D}                    neg 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   824
[codegen] #53  {1:D}                    convert double -> object 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   825
[codegen] #54  {1:O}                ternary_exit_107c1f2f 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   826
[codegen] #55  {1:O}                    return object 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   827
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   828
shows a ternary node being generated for the sequence "return x > 0 ?
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   829
x : -x"
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   830
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   831
The first number on the log line is a unique monotonically increasing
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   832
emission id per bytecode. There is no guarantee this is the same id
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   833
between runs.  depending on non deterministic code
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   834
execution/compilation, but for small applications it usually is. If
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   835
the system variable -Dnashorn.codegen.debug.trace=<x> is set, where x
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   836
is a bytecode emission id, a stack trace will be shown as the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   837
particular bytecode is about to be emitted. This can be a quick way to
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   838
determine where it comes from without attaching the debugger. "Who
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   839
generated that neg?"
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   840
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   841
The --log=codegen option is equivalent to setting the system variable
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   842
"nashorn.codegen.debug" to true.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   843
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   844
* fold
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   845
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   846
Shows constant folding taking place before lowering
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   847
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   848
* lower
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   849
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   850
This is the first lowering pass.
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   851
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   852
Lower is a code generation pass that turns high level IR nodes into
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   853
lower level one, for example substituting comparisons to RuntimeNodes
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   854
and inlining finally blocks.
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   855
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   856
Lower is also responsible for determining control flow information
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   857
like end points.
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   858
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   859
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   860
* attr
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   861
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   862
The lowering annotates a FunctionNode with symbols for each identifier
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   863
and transforms high level constructs into lower level ones, that the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   864
CodeGenerator consumes.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   865
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   866
Lower logging typically outputs things like post pass actions,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   867
insertions of casts because symbol types have been changed and type
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   868
specialization information. Currently very little info is generated by
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   869
this logger. This will probably change.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   870
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   871
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   872
* finalize
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   873
16201
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   874
This --log=finalize log option outputs information for type finalization,
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   875
the third tier of the compiler. This means things like placement of 
889ddb179cdf 8007062: Split Lower up into Lower/Attr/FinalizeTypes. Integrate AccessSpecalizer into FinalizeTypes.
lagergren
parents: 16168
diff changeset
   876
specialized scope nodes or explicit conversions. 
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   877
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   878
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   879
* fields
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   880
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   881
The --log=fields option (at info level) is equivalent to setting the
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   882
system variable "nashorn.fields.debug" to true. At the info level it
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   883
will only show info about type assumptions that were invalidated. If
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   884
the level is set to finest, it will also trace every AccessorProperty
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   885
getter and setter in the program, show arguments, return values
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   886
etc. It will also show the internal representation of respective field
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
   887
(Object in the normal case, unless running with the dual field
16168
f0c208287983 8005976: Break out AccessSpecializer into one pass before CodeGenerator instead of iterative applications from CodeGenerator
lagergren
parents: 16152
diff changeset
   888
representation)
19632
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   889
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   890
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   891
=======================
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   892
3. Undocumented options
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   893
=======================
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   894
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   895
Here follows a short description of undocumented options for Nashorn.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   896
To see a list of all undocumented options, use the (undocumented) flag
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   897
"-xhelp".
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   898
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   899
i.e. jjs -xhelp or java -jar nashorn.jar -xhelp
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   900
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   901
Undocumented options are not guaranteed to work, run correctly or be
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   902
bug free. They are experimental and for internal or debugging use.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   903
They are also subject to change without notice.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   904
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   905
In practice, though, all options below not explicitly documented as
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   906
EXPERIMENTAL can be relied upon, for example --dump-on-error is useful
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   907
for any JavaScript/Nashorn developer, but there is no guarantee.
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   908
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   909
A short summary follows:
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   910
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   911
	-D (-Dname=value. Set a system property. This option can be repeated.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   912
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   913
	-ccs, --class-cache-size (Size of the Class cache size per global scope.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   914
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   915
	-cp, -classpath (-cp path. Specify where to find user class files.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   916
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   917
	-co, --compile-only (Compile script without running. Exit after compilation)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   918
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   919
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   920
	-d, --dump-debug-dir (specify a destination directory to dump class files. 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   921
                This must be combined with the --compile-only option to work)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   922
		param: <path>   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   923
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   924
	--debug-lines (Generate line number table in .class files.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   925
		param: [true|false]   default: true
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   926
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   927
	--debug-locals (Generate local variable table in .class files.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   928
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   929
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   930
	-doe, -dump-on-error (Dump a stack trace on errors.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   931
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   932
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   933
	--early-lvalue-error (invalid lvalue expressions should be reported as early errors.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   934
		param: [true|false]   default: true
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   935
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   936
	--empty-statements (Preserve empty statements in AST.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   937
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   938
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   939
	-fv, -fullversion (Print full version info of Nashorn.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   940
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   941
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   942
	--function-statement-error (Report an error when function declaration is used as a statement.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   943
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   944
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   945
	--function-statement-warning (Warn when function declaration is used as a statement.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   946
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   947
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   948
	-fx (Launch script as an fx application.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   949
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   950
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   951
	--global-per-engine (Use single Global instance per script engine instance.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   952
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   953
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   954
	-h, -help (Print help for command line flags.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   955
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   956
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   957
	--lazy-compilation (EXPERIMENTAL: Use lazy code generation strategies - do not compile 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   958
	                   the entire script at once.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   959
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   960
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   961
	--loader-per-compile (Create a new class loader per compile.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   962
		param: [true|false]   default: true
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   963
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   964
	-l, --locale (Set Locale for script execution.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   965
		param: <locale>   default: en-US
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   966
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   967
	--log (Enable logging of a given level for a given number of sub systems. 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   968
	      [for example: --log=fields:finest,codegen:info])
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   969
		param: <module:level>,*   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   970
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   971
	-nj, --no-java (No Java support)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   972
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   973
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   974
	-nse, --no-syntax-extensions (No non-standard syntax extensions)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   975
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   976
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   977
	-nta, --no-typed-arrays (No Typed arrays support)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   978
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   979
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   980
	--parse-only (Parse without compiling.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   981
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   982
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   983
	--print-ast (Print abstract syntax tree.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   984
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   985
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   986
	--print-code (Print bytecode.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   987
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   988
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   989
	--print-lower-ast (Print lowered abstract syntax tree.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   990
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   991
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   992
	--print-lower-parse (Print the parse tree after lowering.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   993
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   994
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   995
	--print-mem-usage (Print memory usage of IR after each compile stage.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   996
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   997
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   998
	--print-no-newline (Print function will not print new line char.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
   999
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1000
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1001
	--print-parse (Print the parse tree.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1002
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1003
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1004
	--print-symbols (Print the symbol table.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1005
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1006
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1007
	-pcs, --profile-callsites (Dump callsite profile data.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1008
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1009
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1010
	--range-analysis (EXPERIMENTAL: Do range analysis using known compile time types, 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1011
	                 and try to narrow number types)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1012
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1013
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1014
	-scripting (Enable scripting features.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1015
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1016
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1017
	--specialize-calls (EXPERIMENTAL: Specialize all or a set of method according
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1018
	                    to callsite parameter types)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1019
		param: [=function_1,...,function_n]   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1020
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1021
	--stderr (Redirect stderr to a filename or to another tty, e.g. stdout)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1022
		param: <output console>   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1023
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1024
	--stdout (Redirect stdout to a filename or to another tty, e.g. stderr)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1025
		param: <output console>   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1026
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1027
	-strict (Run scripts in strict mode.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1028
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1029
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1030
	-t, -timezone (Set timezone for script execution.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1031
		param: <timezone>   default: Europe/Stockholm
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1032
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1033
	-tcs, --trace-callsites (Enable callsite trace mode. Options are: miss [trace callsite misses] 
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1034
	                        enterexit [trace callsite enter/exit], objects [print object properties])
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1035
		param: [=[option,]*]   
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1036
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1037
	--verify-code (Verify byte code before running.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1038
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1039
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1040
	-v, -version (Print version info of Nashorn.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1041
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1042
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1043
	-xhelp (Print extended help for command line flags.)
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1044
		param: [true|false]   default: false
c9d704ad422e 8023454: Updated DEVELOPER_README and command line flags, ensuring that undocumented flags that aren't guaranteed to work (disabled by default) and that are work in progress show up with an EXPERIMENTAL tag.
lagergren
parents: 16533
diff changeset
  1045