Top Banner
Value Types Project Valhalla
17
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Value Types

Value TypesProject Valhalla

Page 2: Value Types

Project Valhalla

• Specialisation of Generics

• Atomic VarHandles

• Value Types

Page 3: Value Types

Codes like a class, works like an int.

http://cr.openjdk.java.net/~jrose/values/values-0.html

“…to support small immutable, identityless value types.”

Page 4: Value Types

Type Signature Java Type

1) Z boolean 2) B byte 3) C char 4) S short 5) I int 6) J long 7) F float 8) D double 9) L class ; class 10) [ type type[] 11) V void

Page 5: Value Types

Type Signature Java Type

1) Z boolean 2) B byte 3) C char 4) S short 5) I int 6) J long 7) F float 8) D double 9) L class ; class 10) [ type type[] 11) V void

Page 6: Value Types

Type Signature Java Type

1) Z boolean 2) B byte 3) C char 4) S short 5) I int 6) J long 7) F float 8) D double 9) L class ; class 10) [ type type[] 11) V void

Values

References

Page 7: Value Types

Type Signature Java Type

1) Z boolean 2) B byte 3) C char 4) S short 5) I int 6) J long 7) F float 8) D double 9) Q class ; value 10) L class ; class 11) [ type type[] 12) V void

Values

References

Page 8: Value Types

Codes like a class

public __ByValue class Complex {

double real;

double imaginary;

}

Page 9: Value Types

Codes like a class

public __ByValue class Slice {

byte[] array;

int offset;

int length;

}

Page 10: Value Types

Codes like a classpublic __ByValue class Decimal64 {

long value;

long significand() {

return value & 0xFFFFFFFFFFFFFF;

}

long exponent() {

return value >> 56;

}

}

Page 11: Value Types

Codes like a classpublic __ByValue class Price {

Decimal64 value;

}

public __ByValue class Quantity {

Decimal64 value;

}

Page 12: Value Types

Works like an int

• Immutable

• Passed as a copy (semantically)

• Lacks identity

• Equals??? (vcmp)

Page 13: Value Types

Why? Because caches.

Page 14: Value Types

public class Order {

Price orderPrice;

Quantity orderQuantity;

}

Page 15: Value Types
Page 16: Value Types
Page 17: Value Types

java.util.Optional

This is a value-based class; use of identity-sensitive operations (including reference equality (==), identity hash code, or synchronization) on instances of Optional may have unpredictable results and should be avoided.

http://docs.oracle.com/javase/8/docs/api/java/lang/doc-files/ValueBased.html