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

    Loading...
  1. Dashboard
  2. Undefined Space
  3. HotSpot
  4. CompressedOops

Page History

Versions Compared

Old Version 8

changes.mady.by.user John Rose

Saved on May 15, 2009

compared with

New Version 9

changes.mady.by.user J. Duke

Saved on May 15, 2009

  • Previous Change: Difference between versions 7 and 8
  • Next Change: Difference between versions 9 and 10
  • View Page History

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Zero based compressed oops

(To do: format the following nicely.}

...

Compressed oops use an arbitrary address for the narrow oop base which is calculated as java heap base minus one (protected) page size for implicit NULL checks to work. This means a generic field reference is next:

No Format
<narrow-oop-base> + (<narrow-oop> << 3) + <field-offset>.

If

...

the

...

narrow

...

oop

...

base

...

can

...

be

...

made

...

to

...

be

...

zero

...

(the

...

java

...

heap

...

doesn't

...

actually

...

have

...

to

...

start

...

at

...

offset

...

zero),

...

then

...

a

...

generic

...

field

...

reference

...

can

...

be

...

just next:

No Format
(<narrow-oop << 3) + <field-offset>,
allowing to save the heap base add (current Register Allocator
does not allow to save register).
Also with zero base the null check of compressed oop is not
needed. Current code for decoding compressed oops looks like this:

Theoretically it allows to save the heap base add (current Register Allocator does not allow to save register). Also with zero base the null check of compressed oop is not needed.
Current code for decoding compressed oops looks like this:

No Format
if (<narrow-oop> == NULL)
    <wide_oop> = NULL
else
    <wide_oop> = <narrow-oop-base> + (<narrow-oop> << 3)

With

...

zero

...

narrow oop base

...

the

...

code

...

is

...

much

...

simpler. It needs only shift to decode/encode a compressed oop:

No Format

<wide_oop> = <narrow-oop> << 3

Also

...

if

...

java

...

heap

...

size

...

<

...

4Gb

...

and

...

it

...

can

...

be

...

moved

...

into

...

low

...

virtual

...

address

...

space

...

(below 4Gb) then

...

compressed

...

oops

...

can

...

be

...

used

...

without

...

encoding/decoding.

...

Zero

...

based

...

implementation

...

tries

...

to

...

allocated

...

java

...

heap

...

using

...

different

...

strategies

...

based

...

on

...

the

...

heap

...

size

...

and

...

a

...

platform

...

it

...

runs

...

on.

...


First,

...

it

...

tries

...

to

...

allocate

...

java

...

heap

...

below

...

4Gb

...

to

...

use

...

compressed

...

oops

...

without

...

decoding

...

if

...

heap

...

size

...

<

...

4Gb.

...


If

...

it

...

fails

...

or

...

heap

...

size

...

>

...

4Gb

...

it

...

will

...

try

...

to

...

allocate

...

the

...

heap

...

below

...

32Gb

...

to

...

use

...

zero

...

based

...

compressed

...

oops.

...


If

...

this

...

also

...

fails

...

it

...

will

...

switch

...

to

...

regular

...

compressed

...

oops

...

with

...

narrow

...

oop

...

base.

...

Overview
Content Tools
ThemeBuilder

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.

  • Adaptavist ThemeBuilder Powered by Atlassian Confluence 7.4.13
  • Adaptavist ThemeBuilder printed.by.atlassian.confluence
  • Report a bug
  • Atlassian News
Atlassian
Adaptavist ThemeBuilder EngineAtlassian Confluence
{"serverDuration": 334, "requestCorrelationId": "8a6ffa81dc65996b"}