ASSEMBLY_EXCEPTION
author attila
Thu, 31 Jan 2013 18:34:42 +0100
changeset 16206 83069fa0935b
parent 0 fd16c54261b3
child 41274 e31e26d0f9bf
permissions -rw-r--r--
8006529: Methods always get callee - it should be conditional Summary: This commit streamlines the bytecode function signatures, prologue, local variable use, scope creation, and invocation. It started out quite innocently when we noticed that we always emit __callee__ parameters for all functions even when they are not needed, but it turned out to be quite a deep rabbit hole. In the end, I identified exact conditions when functions need to have a callee parameter, when they need to receive parent scope, when they need to create their own scope, when they need to have variable arity signature, and when they need to have an "arguments" object, and made sure that callee parameters in signatures only show up when they are needed, that parent function's scope is only passed to a child function when it is needed, that the function only creates its own scope when it is needed. In crypto.js, the number of scopes dropped from 446 to 244, and the number of callees dropped from 315 to 145. Reviewed-by: jlaskey, lagergren
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
fd16c54261b3 Initial load
duke
parents:
diff changeset
     1
fd16c54261b3 Initial load
duke
parents:
diff changeset
     2
OPENJDK ASSEMBLY EXCEPTION
fd16c54261b3 Initial load
duke
parents:
diff changeset
     3
fd16c54261b3 Initial load
duke
parents:
diff changeset
     4
The OpenJDK source code made available by Sun at openjdk.java.net and
fd16c54261b3 Initial load
duke
parents:
diff changeset
     5
openjdk.dev.java.net ("OpenJDK Code") is distributed under the terms of the
fd16c54261b3 Initial load
duke
parents:
diff changeset
     6
GNU General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
fd16c54261b3 Initial load
duke
parents:
diff changeset
     7
only ("GPL2"), with the following clarification and special exception.
fd16c54261b3 Initial load
duke
parents:
diff changeset
     8
fd16c54261b3 Initial load
duke
parents:
diff changeset
     9
    Linking this OpenJDK Code statically or dynamically with other code
fd16c54261b3 Initial load
duke
parents:
diff changeset
    10
    is making a combined work based on this library.  Thus, the terms
fd16c54261b3 Initial load
duke
parents:
diff changeset
    11
    and conditions of GPL2 cover the whole combination.
fd16c54261b3 Initial load
duke
parents:
diff changeset
    12
fd16c54261b3 Initial load
duke
parents:
diff changeset
    13
    As a special exception, Sun gives you permission to link this
fd16c54261b3 Initial load
duke
parents:
diff changeset
    14
    OpenJDK Code with certain code licensed by Sun as indicated at
fd16c54261b3 Initial load
duke
parents:
diff changeset
    15
    http://openjdk.java.net/legal/exception-modules-2007-05-08.html
fd16c54261b3 Initial load
duke
parents:
diff changeset
    16
    ("Designated Exception Modules") to produce an executable,
fd16c54261b3 Initial load
duke
parents:
diff changeset
    17
    regardless of the license terms of the Designated Exception Modules,
fd16c54261b3 Initial load
duke
parents:
diff changeset
    18
    and to copy and distribute the resulting executable under GPL2,
fd16c54261b3 Initial load
duke
parents:
diff changeset
    19
    provided that the Designated Exception Modules continue to be
fd16c54261b3 Initial load
duke
parents:
diff changeset
    20
    governed by the licenses under which they were offered by Sun.
fd16c54261b3 Initial load
duke
parents:
diff changeset
    21
fd16c54261b3 Initial load
duke
parents:
diff changeset
    22
As such, it allows licensees and sublicensees of Sun's GPL2 OpenJDK Code to
fd16c54261b3 Initial load
duke
parents:
diff changeset
    23
build an executable that includes those portions of necessary code that Sun
fd16c54261b3 Initial load
duke
parents:
diff changeset
    24
could not provide under GPL2 (or that Sun has provided under GPL2 with the
fd16c54261b3 Initial load
duke
parents:
diff changeset
    25
Classpath exception).  If you modify or add to the OpenJDK code, that new
fd16c54261b3 Initial load
duke
parents:
diff changeset
    26
GPL2 code may still be combined with Designated Exception Modules if the
fd16c54261b3 Initial load
duke
parents:
diff changeset
    27
new code is made subject to this exception by its copyright holder.