• Home
    • View
    • Login
    This page
    • Normal
    • Export PDF
    • Page Information

    Loading...
  1. Dashboard
  2. Undefined Space
  3. Valhalla
  4. Minimal Value Types and Valhalla value types command line options

Minimal Value Types and Valhalla value types command line options

  • Created by Paul Sandoz, last modified by Karen Kinnear on Jul 10, 2017

This page describes the command line for the java compiler the java launcher and HotSpot for the support of value types in the valhalla project.

javac

  • -XDenableValueTypes
    Boolean value, default value is `false`
    Enable direct declaration and compilation of value type classes via the "__ByValue" and other qualifiers.
  • -XDmangleClassInfo
    Boolean value, default value is `false`
    Ensure value type names are distinguishable a reference class names by prepending ";Q" to the value type name.
    Should be used in conjunction with java flag "valhalla.mangleClassInfo".
  • -Xlint:values
    Lint category for warnings associated to bad usage of value capable classes - examples:
    • VCC not final
    • VCC cannot 'extend' another class
    • overrides of 'bad' Object methods (such as wait/notify)
    • illegal modifiers on VCC such as 'synchronized'
    • non-final instance fields in VCC
    • cannot assign 'null' to variable of VCC type

java

  • -Djava.lang.invoke.MethodHandle.DUMP_CLASS_FILES
    Boolean value, default value is `false`
    If true dump class files generated for lambda forms and derived value types into a directory named DUMP_CLASS_FILES under the current directory
  • -Djdk.lang.reflect.DVT
    Boolean value, default value is `false`
    If true, allow reflection on derived value types.  This is a temporary workaround until existing hotspot tests convert to VCC/DVT and use reflection on VCC only.
  • -Dvalhalla.enableValueLambdaForms
    Boolean value, default value is `true`
    If true then lambda forms with value types in their signature will use the Q type __Value and value-type specific byte code will be generated.
  • -Dvalhalla.dumpProxyClasses

           Boolean value, default value is `false`

           If true, dumps MVT lambda forms.

  • -Dvalhalla.enablePoolPatches
    Boolean value, default value is `false`
    If true and if "valhalla.enableValueLambdaForms" is true then lambda forms with value types in their signature will generate byte code with constant pool patching where appropriate
  • -Dvalhalla.mangleClassInfo
    Boolean value, default value is `false`
    Ensure value type names are distinguishable a reference class names by prepending ";Q" to the value type name.
    Should be used in conjunction with javac flag "mangleClassInfo".

HotSpot

  • -XX:EnableMVT
    Boolean value, default value is `false`
    If true enable support for minimal value types with a value capable class and an associated derived value type.
  • -XX:EnableValhalla
    Boolean value, default value is `false`
    If true enable support for "valhalla" value types, which in contrast to MVT supports direct value types in conjunction with byte code generation or with the javac flag "enableValueTypes".
  • -XX:ValueTypePassFieldsAsArgs
    Boolean value, default value is `true`
    Pass each value type field as an argument to a method call instead of a value type reference
  • -XX:ValueTypeReturnedAsFields
    Boolean value, default value is `true`
    Return value type fields instead of a value type reference
  • -XX:ValueArrayFlatten
    Boolean value, default value is `true`
    Flatten arrays of values, if possible
  • -XX:ValueArrayElemMaxFlatSize
    Integer value, default is -1
    Max size for flattening an array of values, < 0 means no limit
  • -XX:ValueArrayElemMaxFlatOops
    Integer value, default is 4
    Max number of embedded object references in value type to flatten in an array, < 0 means no limit 
  • -XX:ValueArrayAtomicAccess
    Boolean value, default value is `false`
    Enable atomic access to values in an array

 

To determine if there are unwanted allocations (boxing) see the flags:

  -XX:-UseTLAB
  -XX:+PrintEliminateAllocations
  -XX:+PrintEscapeAnalysis

 

Overview
Content Tools
ThemeBuilder
  • No labels

Terms of Use
• License: GPLv2
• Privacy • Trademarks • Contact Us

Powered by a free Atlassian Confluence Open Source Project License granted to https://www.atlassian.com/software/views/opensource-community-additional-license-offer. Evaluate Confluence today.

  • Kolekti ThemeBuilder Powered by Atlassian Confluence 8.5.21
  • Kolekti ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Kolekti ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 171, "requestCorrelationId": "6f2b127664f20c82"}