►
From YouTube: OMR Architecture 20210304
Description
Agenda:
* Refactoring and cleanup of Linkage properties (#5836) [ @janvrany ]
* Preferred Jenkins trigger for CI jobs [ @fjeremic ]
A
Welcome
everyone
to
the
march
4th
omar
architecture
meeting
today
we
have
two
topics
to
discuss.
The
first
is
jan
rani,
who
wants
to
go
through
some
proposed
changes
to
linkage
properties
in
the
compiler,
so
I
will
turn
it.
C
D
D
Excellent
okay,
so
let
me
start
it.
D
What
I'm
going
to
talk
is
specifically
the
linkage
properties
not
as
much
the
whole
the
whole
linkage-
and
I
will
first
go
you
know
through
through
the
motivation
behind
and
what
what
is
my
idea
and
then
I
will
show
you
how
it
looks
in
the
code,
because
I
made
some
proof
of
concept
or
experiment
to
see
how.
D
So
from
my
point
of
view,
there
are
few
few
issues
in
in
the
linkage
properties.
I
see
it
as
the
issues,
maybe
maybe
it's
just
my
ignorance
and
there
is
a
there
is
a
reason
I
don't
see
why
it
has
to
be
the
way
it.
B
D
But
one
of
the
problem
is:
is
there
is
a
lot
of
co-duplication
among
all
backends
right,
so
pretty
much
all
back-ends.
E
D
Also
there
is
a.
There-
is
a
quite
a
bit
of
code,
duplication
in
within
the
backend
itself,
because,
as
far
as
I
could
see
in
every
constructor
of
every
linkage,
you
set
up
the
you
set
up
the
linkage
properties.
So
you
fill
the
values.
You
know
the
register,
flags
and
everything
and
all
the
all
the
data
structure
you
fill
it
in
and
then
continue.
D
But
if
you
look,
for
example,
for
the
risc
five
and
ar
64,
then
the
system
linkage
and
the
private
linkage
is
pretty
much
the
same,
except
of
one
or
two
registers
which
are
used
for
the
java
stack
pointer
and.
B
D
Is
that
the
linkage
properties
contain
some
jni
specific
members
such
as
now,
I
yeah
the
methods.
E
D
For
virtuals
goals-
and
things
like
this-
which
I
mean
they
don't
hurt,
but
on
the
other
hand,
that's
you
know
where
the
j9,
the
consumer
project
leaks
into
the
into
the
omr,
which
is
something
that
I
guess
would
be
nice
to
avoid,
and
the
other
thing
is
that
you
know
the
meaning
of
the
of
the
properties
or
the
members
of
the
proper
of
the
linkage.
Properties
are
well
not
very
well
documented,
and
sometimes
sometimes
I
struggled
what
they
really
mean,
especially
on
power.
D
There
are
few
few
things,
but
you
know
I
don't
want
to
discuss
these
details,
but
it
would
be
nice
to
to
document
it
a
little
bit,
and
this
is
a
this-
is
a
good
opportunity
for
me.
D
After
working
with
the
code
for
a
while,
I
observe
few
things.
First
of
all
that
that
all
the
linkage
properties,
I've
seen
use
a
quite
a
lot
of
derived
values.
So
there
are
some,
you
know
primary
values
like
a
register
flags,
and
then
you
know
in
that
you
have
this.
You
know
this
is
a
integer
argument
or
an
integer
return
register
like
you
define
the
roles
of
the
register
in
in
the
linkage
yeah.
D
But
then
there
is
a
lot
of
a
lot
of
values
which
are
derived
right
and
like
the
list
of
argument
registers-
and
you
know
where
the
individual
register
starts
in
that
list
and
where
the
floating
point
argument
starts
in
that
list
and
so
on
and
so
forth
and
again
these
these
two
two
things.
D
The
on
the
definition
in
the
ring
in
the
register
flags,
but
they
are
manually,
you
know
the
constants
are
manually
handwritten
into
code,
so
chin
in
one
place
makes
it
you
know
you
you
have
to
you
have
to
freak.
You
have
to
remember
that
you
have
to
change
the
value
in
the
derived
structure.
D
Also,
quite
a
few
members
have
come
on
among
the
back
ends.
That's
that's
what
I
said
before,
like
that
there
is
a
code
duplication
there,
and
also
it
looks
to
me
that
the
structure.
B
D
So
from
that,
when
I
was
trying
to
do
something
about
the
j9
private
linkage
and
avoid
the
avoid
duplication,
I
got
an
idea
that
we
can
probably
compute
most,
if
not
all,
derived,
values
automatically.
B
D
Some
code,
so
we
will
just
fill
in
the
register,
flux
and
you
know
few
few
other
things
and
then
let
let
all
the
other
support
structures
to
be
computed
based
on
based
on
these
flags.
D
Therefore
they
are
created
once
and
not
each
time
you,
you
instantiate
the
linkage
which
might
save
a
little
bit
of
memory
and
maybe
a
tiny
bit
of
time,
but
you
know
the
overall
effect
on
performance.
I
don't
want
to
presume
that
you
know
it
would
make
much
difference,
probably
not,
but
you
can
do
it
and
once
you
have
this.
E
D
So
let
me
let
me
show
you
the
result
right
and,
first
of
all,
obviously
I
write
it
from.
I
started
with
the
risk
5
code.
C
D
Okay,
so
here
here
this
is
the
omar
wreckage
header
file
and
normally
there
used
to
be.
You
know
the
rv
linkage
properties
structure
with
all
the
all
the
code,
but
I
managed
to
I
managed
to
push
all
the
code
up
into
the
into
the
common
command
code
gen
on
our
linkage.
D
So
here
I
just
I
just
make
an
empty
sub
class
because
I
reuse
everything.
What's
there
right,
so
you
know
this.
This
just
saves
me,
I
don't
know
maybe
100
lines
of
code.
D
And
yeah.
D
D
So
here
here
I
create
yet
another
subclass,
and
I
do
that
only
so
I
can.
I
can
have
a
constructor
in
there
and
if
I
go
into
the
constructor,
let
me
see
if
I
can
do
this.
Yes,
so
you
see
that
pretty
much
all
I
do
here
is
just
I
fill
in.
You
know
these
properties
and
I
fill
in
the
register
flags-
and
this
is
this-
is
pretty
straightforward.
If.
D
Elf,
api
documentation,
you
can
just
virtually
copy
paste
the
definition
from
the
from
the
text
into
this
code.
Then
you,
you
know,
decide
on
this.
We
don't
have
a
you
know
this
jni
specific
stuff,
and
then
you
just
call
initialize
and
initialize.
D
D
D
So
if
I
want
to
make
any
change
in
the
system
linkage
for
whatever
reason,
I
just
change
the
flags
here
and
and
that's
it
if
I'm
about
to,
if
I'm
about
to
implement
a
j9,
private
linkage
or
any
other
private
linkage
in
any
other
consumer
project,
I
use
the
same
pattern.
I
just
fill
in
the
register
flags
and
after
that
I
call
initialize
and
it
fills
fills
the
rest.
D
Also,
what's
what's
what
I
changed
here
is
that
I
make
the
properties
here
static.
This
is
why
I
put
when
I
put
the
initialization
of
the
flux
into
the
constructor
of
the
linkage
properties
not
in
to
do
in
constructor
of
the
linkage.
D
All
the
tests
that
are
that
were
passing
before
this
refactoring
also
pass
on
a
risk.
Five.
Okay.
Are
there
any
questions
so
far
or
comments.
F
Yeah,
I
have
a
question,
so
these
linkage
properties
don't
actually
exist
at
all
on
z
and
yeah.
They
seem
like
kind
of
like
a
sibling
class
to
the
actual
linkage
class,
so
wondering
what
purpose
do
they
actually
serve?
Can
we
not
just
inline
all
of
these
fields
into
the
base
linkage
class?
F
D
D
A
You're
proposing
either
making
the
linkage
properties
a
subclass
of
system
link
or
of
linkage
or
just
embedding
the
fields
from
the
properties
class
in
the
linkage
hierarchy
itself,.
F
The
latter,
the.
F
The
linkage
properties
is
just
a
bunch
of
fields,
and
it's
asking
questions
like
okay.
What
is
the
first
integer
argument
register
what
is
preserved?
What
is
volatile
these
to
me
are
just
things
that
we
can
store
in
the
linkage.
A
Yeah,
I
guess
doing
it
that
way,
you
would
would
promote
some
of
the
sharing
that
an
extension
that
that
yan
has
been
talking
about
as
well
right.
You
just
sort
of
get
that.
Naturally,
as
the
linkage
hierarchy
is
extended,.
F
That's
right,
I
don't,
I
think,
we're
introducing
extra
complexity
by
having
this
linkage
property
extensible
class
as
a
sibling
to
all
the
other
linkages
which
are
also
extensible.
A
So
I
don't
even
remember
what
some
of
the
reasoning
was
behind
creating
a
separate
system,
linkage,
properties
class,
I
know-
and
there
are
places
in
the
code
where
we
actually
create
a.
We
actually
do,
pull
it
out
into
a
variable,
and
then
we
ask
that
variable
questions
about
the
properties,
but
I
don't
know
why
we
couldn't
just
do
that
on
the
linkage.
F
D
D
D
You
would
have
to
initialize
well
well,
you
can
make
them
static
all,
but
then
how
to
initialize
them
in
a
in
a
concise
way.
And
if
you
don't,
if
you
don't
share
them
and
you
will
use
you
know
my
my.
D
Which
might
be
a
little
bit
wasteful
if,
if
only
eight
registers
out
of
32
are
argument
registers?
But
if,
if
you
do
it
only
once,
you
know
when,
when
the
whole
code
gets
loaded
into
the
memory,
then
you
know
the
the
price
you
pay,
for.
D
This
is
probably
better
if
you,
if
you
would
have
to
do
it
each
time
you
instantiate
the
the
compilation,
then
you
maybe
do
not
want
this,
and
you
would
have
to
resort
what
we
have
right
now
into
just
having
manually
hard
code
values
there,
because
the
there's
the
fastest
way
to
get
it
get
it
done.
F
So
I
guess
to
summarize
I
guess
the
concern
is
we're
paying
the
cost
once
per
compilation,
rather
than
once
per
the
lifetime
of
the
application.
Is
that
the
concern
yeah.
D
Okay,
so
you
know
for
risk
five,
this
this
works
quite
fine.
I
also
I
also
went
and
tried
to
do
it
for
power,
even
though
I
am
not
much
of
a
power.
B
D
At
yeah,
the
power
looked
more
complicated
and
I
wanted
to
see
how
how
it.
B
D
When
when
we
tried
to
use
the
common
stuff
and
then
extend
and
see
how
how
it's
done
in
power
and
in
power,
it's
actually
not
that
nice,
I
didn't-
I
didn't-
I
didn't
have
enough
time
to
to
think
how
to
make
it
even
nicer.
But
still
you
saved
quite
a
bit
of
code
on
power
right.
So
here
we
go
to
the
power
linkage
and
we
have
we
have
all
this
and
we
have
all
these.
D
The
power
linkage
has
all
the
bases,
but
also
on
power.
You
have
this
vector
registers
and
then
you
have
this
funny.
First
allocatable
integer
argument
register
members,
and
you
know
on
power.
We
have
these
condition
registers
also
and
and
doc,
and
all
all
these
kind
of
things.
D
So
here
you
see
that
you
basically
extend
extend
the
value.
Sorry
extend
the
extender
structure
with
with
what
you
need,
and
also
also
you
implement.
D
So
this
is
an
this
is
kind
of
a
proof
that
you
can
extend
the
you
can
extend
and
accommodate
for
for
the
specifics,
and
also
this.
This
gives
us
mechanism
how
to
get
how
to
get
the
j9
specific
properties
out
of
this
one
big
property,
because
because
then
the
j9
linkage
j9
private
linkage.
We
just
add
these
into
it,
just
like
like
it's
done
here
right,
but
it
would
be
in
the
j9
code,
not
in
the
omr
code.
D
B
D
I
couldn't
make
it
could
make
the
linkage
property
static
in
the
in
the
system.
Linkage,
and
I
will
show
you
why
this
you
know
it's
it's
kind
of
difficult
to
work
with
the
with.
D
Because
we
never
could
make
it
work
in
I
mean
it
just
generates
some
weird
code
that
crashes
in
one
way
or
another.
D
So
this
is
pretty
much
a
blind
refactoring,
but
the
problem
problem
here
why
it
cannot
be
static.
Is
that
essentially,
essentially,
what
we've
done
in
in
risk?
Five
is
that
that
we
move
this
into
the
constructor
of
the
linkage
properties
all
this
code,
but
we
cannot
do
it
easily
here,
because
here
is
all
conditional
and
in
the
static
constructor
or
in
the
constructor,
that
is
called
for
a
static
variable.
D
We
cannot
access
the
compilation
and
target
and
everything,
so
I
am
not
hundred
percent
sure
how
to
deal
with
with
that.
We're
also.
D
Yeah,
but
on
x86
there
are
two
two
directories
right:
there
is
this
amd64
and
I.
D
On
zed,
I
don't
know,
I
don't
know,
but
anyway,
this
is
the
power.
The
power
is
complicated
enough
to
to
demonstrate
demonstrator
issue.
D
One
way
one
way
would
be
would
be
having
having
like
a
three
different
classes
for
system
linkage:
properties
like
a
32-bit
aix,
32-bit,
linux,
64-bit,
linux,
64-bit,
aix,
and
also
now.
I
learned
thanks
to
boris,
that
there
is
yet
another
api
of
motorola
which,
which
is
used
on
some
32-bit
power.
Pcs
of
our
interest,
which
I
don't
think
is
accommodated
here.
D
Which
one
we
set
into
the
non-static
variable,
I
mean
reference
to
which
one
it
would
probably
make
it
make
it
much
easier
to
to
read,
because
then
we
won't
have
this
conditionals
and
if
and
force
inside,
this
kind
of
a
definition
thing
right.
D
That's
up
to
this
question
I
don't
have.
I
don't
have
a
proper
answer.
I
don't
like
the
way
it's
done
right
now,
but
that's
where
I,
when
I
hit
the
wall
with
my
great
idea
of
having
having
them
static.
B
Okay,
I
have
big
doubts
about
that
whole
thing.
You
know
on
every
line
when
you
say
well,
we
cannot
really
look
that
we
cannot
really
compute
that
statically
like
that
is
little
indian
or
where
was
the
line
that
that
you
just
showed
us.
I
have
a
general
discontent
about
even
having
that,
because
that's
like
pretending
that
we
have
cross-jitting
or
well
cross
compilation
that
never
worked
and
and
when
you
try
looking
at
it.
B
For
example,
if
I
try
to
cross
jit
from,
I
don't
know
little
indian
power
to
big
indian
power,
the
whole
structure
of
the
code
has
got
much
bigger
problems
than
that
than
any
of
this.
So
I
don't
see
why
we
even
have
that
that
that
should
all
be
define
the
compiler
constants
at
compilation,
time
that
just
are
defined
early
enough
that
this
problem
about.
Well,
we
cannot.
B
A
Yes,
of
course,
just
just
so,
I
understand
what
you
were
proposing.
Your
your
thinking
is
that
the
entire
property
should
simply
just
be
a
constant,
or
they
should
all
just
be
constants,
and
there
shouldn't
be
a
need
to
update
them
during
initialization
at
all.
There
should
be
one
representation
for
each
kind
of
linkage
that
we
want
to
to
to
have.
B
No,
that's
not
what
I
said,
jan
on
your
screen,
can
you
go
to
that
if
indirect,
indirect,
indirect
is
yeah
yeah,
something
like
that?
Yes,
yes,
is
big
endian.
What
I
am
saying
is
that
dynamic
redirection
from
compilation
to
target
to
cpu
to
is
big
endian
makes
no
sense.
I
mean
you
could,
but
you
always
know
whether
it
is,
is
big
endian
or
not.
B
Now
I'm
not
advocating
against
what
you
just
said
right
that
these
things
should
be
just
static
constants,
but
you
know
that
that
that's
it
that's
a
different
thing.
Jan's
problem
was
that
we
cannot
conditionally
or
with
a
small
wind
palms
alignment
right
lying
right.
Dependent
on
is
big
indian,
because
in
a
static
constructor
or
what
you
call
it,
you
don't
have
access
to
is
big
indian,
but
that
is
simply
because
right
now,
this
whole
construction
about
is
big.
Indian,
being
dynamic.
A
B
B
Can
it
has
has
has-
and
this
is
quite
a
different-
this
is
quite
a
different
issue.
Quite
orthogonal
to
to
the
linkages
is
that
the
compiler
has
a
number
of
dynamic
properties
about
the
the
dynamic
knowledge
about
the
target
of
the
compilation,
which
is
indeed
static.
B
A
Okay,
so
some
of
this
code
is
is
historical,
so
where,
where
this
code,
where
some
of
those
kinds
of
changes
were
introduced,
was
back
at
a
time
when
cross
compilation
was
certainly
a
possibility,
we
could
run.
We
could
run
on
x86
hardware
and
generate
code
for
a
power
pc
machine,
so
that
was
certainly
a
possibility.
A
The
the
a
lot
of
that
functionality
sort
of
eroded
over
time
and
we're
kind
of
at
a
state
where
it
likely
doesn't
work.
That
is
not
a
path
that
that
actually
works,
and,
in
fact,
when
we
re-architected
the
code
to
open
source,
we
I
think
we
deliberately
had
to
make
a
choice
about
whether
or
not
we
were
going
to
support
cross-compilation,
and
the
answer
was
no
just
to
make
the
the
open
sourcing
easier.
However,
I
think
looking
forward
cross-compilation
is
not
going
to
be
off
the
table.
A
If
you
look
at
some
of
the
technologies
that
we
have
available
to
the
compiler,
so,
for
example,
the
jit
server
com
compilation
approach
where
compilat
the
the
compilation
can
actually
be
separated
from
the
language
environment
itself,
perhaps
even
on
a
different
architecture.
A
There
may
be
some
cross-compilation
use
cases
in
the
future,
so
we
don't
necessarily
want
to
preclude
that,
and
if
we
we're
going
to
support
the
the
notion
of
having
a
target
different
from
the
host
that
you're
compiling
on,
then
we
do
need
those
kinds
of
checks
in
the
code
still,
and
I
don't
think
that
we
can
make
them
if
defs
in
order
to
support
that.
B
Okay,
so
now
I
am
really
happy
because
I
mean
it's
it's
diverging
very
far
from
today's
topic,
but
at
least
we've
got.
You
know
some
concrete
talking
about
well,
what
exactly
the
goals
of
omr
are
here,
and
I'm
very
happy
to
hear
that.
Yes,
this
something
that
would
be
important
for
our
use
case
at
that
at
labor.
B
Is
you
know
so
so
then
we
we
just
say:
okay,
no,
we're
not
throwing
out
cross
competition
completely.
It's
just
something
that
doesn't
work
today.
A
A
I
can
dig
it
up
for
you
that
really
describes
some
of
the
starting
sets
of
work
that
we're
going
to
need
to
do
in
order
to
support
cross-compilation
in
in
in
the
compiler
and
like
I
said,
because
it
wasn't
really
something
that
we
it
was
used
early
on,
and
then
we
went
through
this
period
where
it
wasn't
used
and
then
the
the
as
a
result
of
that,
a
lot
of
the
support
essentially
eroded,
but
you'll
still
see
lots
of
it
in
the
code
like,
for
example,
where
we
check
the
target
dynamically
or
if
you
see
or
if
you
see
macros
in
the
code,
where
we're
checking
to
see
if
the
host
is
one
kind
of
an
architecture
or
the
target
is
another
kind
of
architecture.
A
Those
are
all
left
over
from
the
days
where
we
did
where
we
did
cross
compilation.
So
if
we
do
something
like
that
in
the
future,
we're
going
to
have
to,
I
think,
put
her
in
a
fairly
we're
going
to
have
to
essentially
overhaul
the
entire
compiler
here
to
understand
how
like
what
what's
correct
and
what
isn't
correct
and
and
to
make
it
so
so
that
issue
that
I,
that
I
mentioned
that
I
can
dig
up
for
you
does
touch
on
some
of
that,
but
it
it's.
I
mean
you're
right.
A
A
A
Right
so
I
was
thinking
I
was
trying
to
think
in
my
mind
what
some
of
the
motivations
could
have
been
for
separating
the
linkage
properties
into
a
separate
class
originally,
and
I
think
that
one
of
the
original
motivations
from
that
would
have
been
that
when
you're
looking
at
two
calling
conventions
that
are
very
similar
to
each
other
and
I'll
go
back
to
that
time.
What
was
around
at
that
time?
You'd.
A
Look
at
32-bit
windows
versus
32-bit,
linux
they're
very
similar,
but
they
have
some
subtle
differences
in
terms
of
like
how
you
handle
the
value
being
returned
from
the
stack
and
whose
responsibility
is
it
to
clean
up
the
stack
on
on
a
call
they're,
largely
the
same
except
a
couple
of
properties
are
different.
I
think
the
goal
there
was
to
produce
a
sort
of
a
a
common
and
I'll
just
pick
system.
Linkage,
let's
say
pick
a
a
system,
linkage
that
had
the
same
sort
of
logic,
identical
logic
for
windows
and
linux.
A
But
the
difference
was
the
properties
class.
You
could
define
a
linux
specific
property
class
where
you
could
define
a
windows,
specific
property
class
and,
depending
upon
what
the
settings
were
in
those
different
properties,
the
the
the
common
linkage
implementation
would
do
different
things
at
the
different
points
right.
So,
oh,
I
need
to
clean
up
the
stack
here
or
I
need
to
push
this
value
now
or
that
kind
of
thing.
A
A
So
I
think,
if
we're
going
to
try
to
understand
what
the
right
way
to
architect
to
re-architect
linkage
and
linkage
properties,
I
think
we
need
to
think
of
what
role
do
we
want
to
have?
What
are
we
trying
to
accomplish
with
having
a
separate
linkage
properties,
because
if
we
go
the
approach
that
perhaps
philip
was
advocating
that
suggests
that
that
properties
aren't
shared
in
that
way,
they're
shared
more
through
the
sharing
of
or
the
the
the
subclassing
of
of
the
linkage
hierarchy.
A
A
To
be
honest,
I'm
not
sure
yet,
which
way
I
would
favor
I'd
have
to
give
some
thought
to
the
pros
and
cons
of
of
the
different
approaches
and
what
we
were
hoping
to
accomplish.
D
Static
well,
to
be
honest,
I
I
still
kind
of
prefer
to
have
a
linkage
link
is
perfectly
simple
too.
One
reason
is
yeah,
you
can
you
can
share
them
and
you
know
that's.
You
know
the
difference.
The
telling
difference,
what
is
the
linkage
properties,
and
what
is
the
linkage
is
the
linkage
properties
are
static.
Immutable
data,
pretty
much
same
for
for
all
also
another
reason
for
me
to
to
make
them
separate
is
that
the
linkage
class
is
usually
a
monster
in
itself
and
putting
more
legs
onto
it
would
make
it.
A
With
the
way
that
you've
done
things
with
the
linkage
class
on
risk
five,
I
guess
I'm
I'm
trying
to
understand.
Are
there
unique
requirements
that
you
have
on
risk?
Five
that
you
were
trying
to
solve,
with
the
way
that
you
did
it
so,
for
example,
is
the
savings
that
is,
is
whatever
start
startup
time
savings
that
you're
getting
is.
That
is
that?
Is
it
really
that
critical
on
risk?
Five?
I'm
not
saying
that!
That's
a
bad
thing,
I'm
just
trying
to
understand
no.
D
No,
no,
you
know
I
shouldn't
probably
have
even
talked
about
about
that
saving
I
was,
I
was
driven
by
merely
by
reducing
the
code,
duplication.
A
D
D
To
copy
paste
stuff
here
and
there
also,
if,
if
you
look
about
the
linkage
properties
on
ar
64,
they
are
pretty
much
the
same.
I
mean,
if
not
exactly
the
same,
I
think
recently.
Recently
the
allocation
order
was
added,
and
I
I
haven't
done
that
yet.
D
Then
I
believe
you
know
in
10
minutes
I
can
just
delete
150
lines
of
code
from
from
air
64
back
end
and
in
turn
in
you
know,
another
50
or
60
lines
of
code
in
the
j9
in
the
j9
j9
r64
private
linkage,
because
then
I
will
only
set
the
register
flex
and
a
few
other
bits
and
then
go
initialize
to
to
do
the
rest.
So
that
was
the
that
was
the
primary
primary
motivation.
I
didn't
want
to
contribute
and
add
another
copy-pasted
code.
D
A
Yeah
and
and
first
of
all,
I'll
I'll.
Thank
you
for
that.
It's
a
very
I'm
glad,
I'm
very
happy
to
see
that
you're
you're
you're
you're,
considering
that
kind
of
thing
it's
it's
certainly
a
problem
that
and
you've
obviously
you're
seeing
it
here
with
the
with
the
way
the
linkage
class
has
evolved
over
the
last
20
years
and
with
the
with
the
different
directions
that
different,
architectures
or
even
different
operating
systems
have
have
chosen
to
to
to
take
it.
A
A
I
think
the
we
do
need
to
give
some
thought
as
a
as
a
group
on
what
it
is
that
we're
trying
to
like
how
how
these
I
think
deciding
on
what
it
is
that
we're
trying
to
how
we
want
these
linkage
classes
to
behave
will
determine
what
some
of
the
architectural
choices
are
that
we
make
like
do.
We
need
a
separate
class
for
the
properties
should
they
be
do
we
need
to
like
how
do
we
encourage
more
sharing
across
different
linkages?
A
Things
like
that
yeah
and
what
the
best
way
of
doing
that
is.
I
I
mean
I,
I
think
that
you're
not
going
to
get
many
arguments
and
somebody
please
step
up
and
argue
that
startup
time
is
important.
So
we
should
try
to
minimize
that
as
much
as
possible,
sharing
as
much
of
it
as
possible
would
be
would
be
ideal
as
well.
A
I'm
not
so
convinced
of
that
one
though,
but
but
but
still
it's
it's
something
maybe
to
put
on
the
table.
Actually,
I
I
may
take
that
one
back.
There
are
some
very
common
operations
that
occur
in
linkages
that
that
that
definitely
would
be
shared
so,
for
example,
for
a
particular
language
environment.
How
do
you
map
values
onto
the
stack
right
like
there
might
be
a
lot
of
similar
code
there?
That
would
be
shared
across
the
different
architectures?
A
How
do
you
map
a
single
element
on
the
stack
that
that
could
be
something
that
gets
shared
as
as
well,
and
I
think
you
could
probably
go
through
the
the
list
of
functions
that
make
up
these
different
components
and
and
find
some
that
could
definitely
be
shared
between
the
different
linkages.
D
That
can
be
you
know,
shared
by
by
just
you
know,
splitting
into
multiple
pieces
like
having
you
know
this,
this
sort
of
template
methods
and
then
smaller,
smaller
stuff.
So
so
I
think
there
is
a
great
potential-
and
I
guess
in
the
end-
and
that's
that's
a
rough
estimate,
and
maybe
maybe
too
optimistic,
but
I
guess
we
can
save
up
to
30
percent
of
the
code
in
each
back
end
by
by
doing
this.
A
Yeah,
I
think
that's,
that's.
That's
definitely
a
a
worthwhile
direction
to
go
in
and
we're
trying
to
do
that,
not
just
in
the
linkage
class
but
across
the
board
across
the
different
code.
Generators
try
to
share
as
much
as
we
can.
A
There
are
some
very
seemingly
minor
reasons
why
a
lot
of
that
is
is
somewhat
challenging
to
do
at
the
moment,
and
I
know
that
myself
and
I
know
philip
has
been
chipping
away
at
at
little
bits
of
it
as
well,
trying
to
make
it
easier
for
code
to
be
shared
across
the
the
different
code
gen.
So
just
as
an
example,
you
know
if,
if,
if
the
like,
what
the
register
enum
is
in
some
cases
would
prevent,
because
every
architecture
used
to
have
their
own
enum.
A
That
kind
of
thing
would
prevent
sharing
of
a
of
a
real
register
across
the
different
back
ends,
and
that
does
of
course,
spill
into
the
linkage
code.
You've
got
a
pr
open.
I
believe
right
now
for
copy,
read
just
copy
parameters
to
home
location
or
something
like
that.
A
That
code
is,
I
think,
there's
even
an
issue
open
for
commenting
this
up
that
code.
I
think
is
pretty
much
identical
across
every
architecture
except
arm
the
32-bit
iron.
It's
the
only
one
out,
so
there's
no
reason
why
that
code,
for
example,
couldn't
just
be
shared,
so
we
need
to
go
through
and
and
and
map.
Some
of
these
linkage
functions
into
common
ones
that
can
be
shared
across
the
different
architectures.
A
A
So
I
guess
well
I
I
I'm
trying
to
understand
then
what
the
next
step
here
is
for
the
work
that
you've
done
here
I
mean
just
given
the
precedent
that
we
have
with
linkages
kind
of
going
their
own
way
already
like
for
the
last
n
number
of
years.
A
I
I
wouldn't
say
that
this
like
what
you've
done
here
is
is
not
I.
I
wouldn't
say
that
this
is
code
that
we
wouldn't
want
to
accept.
I
mean
it's
it.
It's
just
done
a
different
way,
just
like
every
other
architecture
has
done
it,
but
you
know
certainly
some
of
the
ideas
you
have
on
on
sharing,
I
think,
could
be
perhaps
to
be
taken
into
account
too.
D
Well,
from
my
point
of
view
there,
there
are
two
two
things
right
as
I
was
working
on.
The
first
few
comments
just
did
everything
I
think
yeah
up
to
here
they
did
everything
locally
in
a
in
a
risk.
Five
code
gen-
and
I
am
kind
of
happy
with
that
code
and
I
started.
I
started
hacking
all
these,
because
I
wanted
to
do
something
about
it
before
I
start
up
streaming.
The
private
linkage
to
j9
right
the
way.
E
D
It
right
now
it's
really
hacky
and
I
don't
want
get
this
hacks
and
horrible
code
to
be
upstream,
so
I
started
to
polishing
it
here.
So
the
first
question
is:
if,
if
this
is
okay
enough
to
accept
it
inside
the
risk,
five
coaching
and
that's
something
that
then
something
I
can
probably
you
know
polish
and
squash
the
comments
and
just
upstream
what
to
do
with
the
rest.
D
A
First
of
all,
any
rear,
any
re-architecting
we
do
with
the
linkage
class,
I
think,
is
going
to
affect
every
architecture,
and
it
would
be
ideal
if
and
actually
that's
how
it
should
be-
that
every
architecture
gets
changed.
The
same
way
like
we
should
all
be
doing
the
same
kind
of
thing
so
right
now
that
means
a
different
amount
of
rework
that
has
to
happen
on
x.
To
make
that
happen,
a
different
amount
of
rework
on
power
on
arc64
and
then
even
on
whatever
you
do
in
risk,
five
is
going
to
have
to
get
re-architected.
A
A
So
I
I
think
that
you're
you're
definitely
giving
some
good
thought
here
to
some
to
some
issues
that
have
to
get
to
some
of
the
issues
that
we
have
to
solve,
but
I
don't
think
you
have
to
solve
all
of
them
in
order
for
you
to
get
your
code
committed
at
least
that's
my
opinion
at
some
point
in
the
future,
when,
when
we
start
to
pull
everything
when
we
start
to
make
everything
more
consistent,
this
code
is
just
going
to
have
to
be
some
of
that
code
that
gets
re-architected
at
that
time,
along
with
every
other
backend
that
we
have.
A
F
A
So
is
this:
is
this
pull
request
that
you
have?
Is
this
a
representative
of
what
the
real
code
that
you
want
to
commit
looks
like,
meaning
that
it's
it's
ready
for
review
and
possible?
Merge
it's
just
a
proof
of
concept
that
you
wanted
to
show
some
ideas
with.
D
I
and
I
opened
the
pull
request,
just
an
easy
way
to
give
you
give
you
a
way
how
to
look
at
the
code,
so
I
would
say-
and
you
know
the
proquest
is
just
a
draft-
I
never
I
never.
D
D
A
Can
someone
that's
familiar
with
the
code?
Remind
me,
is
linkage
pro
and
perhaps
yeah
you're,
the
you're
the
person
to
do
it
is
linkage
properties
right
now
in
the
base,
omr
linkage
class,
or
does
it
only
exist
in
the
that
first
architecture,
layer
like
it
would
be
in
the
in
the
power,
co,
power
linkage
or
x86
linkage
or
risk
5
linkage
is
that
where
the
first
occurrence
of
the
linkage
properties
is.
A
The
reason
I'm
saying
that
is
because,
if
you,
if,
if
risk
five
decided
that
the
way
that
you
wanted
to
implement
this
was
to
make
the
linkage
property
static,
that
would
be
a
decision
that
you
make
in
the
risk
5
specialization
of
the
linkage
hierarchy,
so
you're
certainly
free
to
do
it.
That
way,
if
that's
the
way
that
you
wanted
to
do
it.
A
I'm
just
looking
at
at
least
on
x86.
They
lit
yeah
there.
There
is
no
properties
in
the
in
the
base
class,
so
making
that
a
static
is
the
way
that
I
mean
that
that
could
be
the
way
that
you
do
that
now,
but
as
as
philip
was
saying,
some
of
these
decisions
may
get
revisited
in
the
future
as
we
do
a
proper
and
a
more
consistent
re-architecting
of
the
linkage
code
across
all
architectures.
A
D
A
A
Yeah
they're
yeah,
they
live
in
the
okay.
Just
so
you
know
in
case
you
hadn't
seen
it.
I
did
create
a
linkage.
Epic
must
have
been
about
three
years
ago
now
in
the
omr
project.
That
is,
was
there
to
track
some
of
the
work
that
we
need
to
do
in
order
to.
A
Re-Architect,
the
linkage
essentially
and
over
the
years
I've
been
adding
various
issues
to
it
or
I've
been
tagging.
Various
issues
there
just
to
track
some
of
the
evolution
of
of
of
the
code
as
we
as
we
go
on
so
feel
free
to
look
at
that
add
any
thoughts
you
have
to
to
that
body
of
of
issues
as
we
go
forward
at
some
point.
A
You
know
I
I
don't
know
when
just
but
at
some
point
in
the
future,
I
would
like
to
spend
some
time
with
everyone
just
going
through
a
different,
an
architecture
for
the
for
the
linkage
hierarchy
itself,
but
may
not
happen
anytime
soon.
So.
A
Thanks
for
taking
us
through
this
yen,
it's
and
and
for
thinking
about
some
of
the
issues
that
you're
thinking
about
it's
really
nice
to
nice,
to
see
that
you're
trying
to
make
the
code
better
than
than
it
than
it
currently
is.
That's
great.
A
Okay,
thank
you.
I
have
a
q.
I
have
a
question
for
boris.
If
you,
if
you
don't
mind
you,
you
mentioned
that
cross-compilation
or
having
the
ability
to
do,
cross-compilation
is
aligned
with
some
of
the
interests
that
you
have.
Are
you
able
to
elaborate
on?
Are
you
really
able
to
elaborate
on
that
at
all
like
what?
How
how
do
you
foresee
using
cross
compilation
in
your
in
your
environment,.
B
It
is
for
a
bootstrapping
of
a
small
talk
kernel
that
we
have
so
it's
essentially,
if
you
did,
if
you
want
to
bootstrap
like
the
idea,
is
to
aot
the
lowest
level
base
classes
and
and
once
you
have
that
in
a
native
processor
form,
then
the
rest
of
the
system,
you
you
have
a
jit
which
is
which
is
not
like
omr
or
what
we
were
doing
but
is
is,
is
a
meta
circular
jit
that
lives
inside
the
image
itself,
but
in
order
to
be
able
to
bootstrap
safe
or
power
pc,
big
endian,
the
only
way
is
to
have
a
running
system
on
something
else
like
I
don't
know
on
your
intel
desktop,
for
example,
and
the
idea
is
that
you
bootstrap
a
power
pc
system
by
aot
and
your
kernel
image
from
your
intel
desktop,
and
you
know
for
that.
B
You
need
to
you
need
to
actually
cross
compile,
not
just
cross
build
right,
because
if
you
simply
cross
build,
then
you
have
an
aot,
compiler
or
jit
compiler
or
you
know
whatever
right,
you
have
a
compiler
that
bootstraps
from
power
pc,
but
you
don't
have
a
small
talk
image
that
will
call
that
and
feed
it.
The
base
class
hierarchy
that
you're
trying
to
aot
in
the
first.
B
So
when
I
was
looking
at
the
compiler
and
I
was
like
okay
well,
there
is
a
whole
bunch
of
flags
here
in
in
make
and
there
is
a
whole
bunch
of
fifths
and
there
is
a
whole
bunch
of
runtime
structures
in
the
code
itself
that
allows
for
for
cross
compilation.
B
But
there
is
like
basic
things
like
when
you,
when
you
binary
and
code
and
instruction
you
just
left
to
right
or
the
different
fields,
and
there
is
no
attempt
to
bite
swap
when
you're
doing
cross
indian
and
I
was
searching
the
code
and
trying
to
grab
on
different.
You
know
likely,
and
I
wasn't
finding
anything
like
well.
How
do
you
you
know?
B
How
do
you
bite
swap
when
you
do
when
you
do
a
a
cross
compiler
and
I
was-
and
I
was
looking
at
the
code
visually
as
well,
and
I
was
like
okay
well,
there
is
not
even
an
attempt
to
to
do
anything
like
that,
and
then
you
know
when
there
is
a
whole
bunch
of
these.
You
know
usual
suspects
right
what
you
what
you
need
to
be
doing
when
you
were
dynamically
cross
compiling
and
they
weren't
there,
and
I
was
like
okay
well.
This
was
couple
years
ago.
So,
okay,
this
is
really
too
bad.
B
So
we
cannot
use
this
to
cross
aot.
Our
small
talk,
so
we're
gonna
go.
You
know
some
other
way
and
and
and
we
used
some
resources
to
to
do
this-
bootstrapping
aot
completely,
not
using
omr
and-
and
you
know
that
was
based
on
this
impression-
that
okay,
well,
we
just
don't
have
cross
compilation
because
well
fundamentally,
yeah
there
are
some.
There
are
some
bits
that
that
try
to
do
it,
but
then
there
are
fundamental
bits
that
are
missing
and.
F
I
just
want
to
mention,
of
course,
in
in
the
past,
we
have
supported
cross
compilation
on
z,
so
what
you
spoke
about
by
swapping
when
we
encode
stuff
on
z
and
search
for
bos,
I
put
it
in
the
chat
there
on
on.
A
Oh
yeah,
yeah
yeah,
I
think
you'll
you'll
find
a
sort
of
a
an
incomplete
implementation
in
the
in
the
compiler
right
now,
and
one
of
the
things
that
I
think
this
was
a
discussion
topic
and
some
issue
not
that
long
ago,
where
the
the
agreement
was
that
the
best
way
that
I
think
we
we
can
the
best
way
to
go
about
reintroducing
cross-compilation
support
is
to
not
to
try
to
fix,
what's
already
there,
but
to
sort
of
take
a
take,
a
fresh
approach
to
it
and
try
to
understand
all
the
different
places
that
would
need
to
get
changed
to
support
cross-compilation
and
then
make
sure
that
the
the
support
is
essentially
there,
so
basically
starting
from
scratch.
A
A
They
would
obviously
still
be
there
in
a
in
a
in
in
a
in
a
cross-compilation
world,
but
but
yeah
more
work
for
sure
needs
to
get
done
there
right
all
right.
Well,
thanks
thanks
for
sharing
that
that
use
case
with
us,
it's
good
to
know
that
there
are,
you
know,
other
than,
let's
say
a
a
jit
server
kind
of
environment.
It's
good
to
know
that
there's
there
are
other
use
cases
of
this
as
well.
B
Oh
yeah
yeah
we
were,
we
were
quite
dependent
on
this
and
and
then
it
was
a
very
large
disappointment
to
see
the
code
in
the
in
the
state
that
it
that
it
was
at
it.
So
it's
it's!
It's
really
happy
to.
You
know
to
hear
that
that
we
have
not
killed
this
completely.
B
A
I
think
that
yeah
it's
I
mean,
unfortunately,
it's
just
a
matter
of
just
getting
people's
time
to
look
at
it
and
just
hasn't
been
the
priority
at
this
point,
but
it's
certainly
we're
not
precluding
it
at
all.
A
Perfect
cool,
okay,
all
right,
so
we
have
one
more
topic
to
discuss
a
very
important
topic.
Philip,
do
you
want
to.
F
Take
us
through
this
sure,
we'll
make
this
pretty
quick.
So
eclipse
the
eclipse
organization
is
the
their
it.
Folks
are
the
ones
who
manage
the
genie,
omr
github
account
and
it
seems
they
have
deleted
that
user
id
and
are
replacing
it
with.
I
think
eclipse,
omr
bot
or
something
like
that.
I
think
they're
in
the
transition
of
doing
that
for
all
the
projects.
F
So
basically,
we
can't
act
that
user
anymore,
which
was
a
very
quick
way
to
launch,
builds
or
jenkins,
builds
on
our
pr's,
although
the
the
trigger
is
only
based
off
the
name
genie
omar,
so
you
didn't
really
need
the
at
at
all
to
trigger
those
builds,
but
it
was
a
pretty
convenient
way
of
doing
so.
F
So
I
guess
this
is
a
good
point
to
kind
of
come
back
to
the
community
and
ask
if
we
want
to
change
that
moving
forward
to
a
different
keyword,
or
do
we
still
stick
with
genie
omar
or
do
we
change
it
to
something
completely
different?
And
I
guess
adam
is
here
on
the
call
as
well.
I
don't
know
if
there's
anything
else,
you
want
to
add
adam.
E
E
The
ad
there,
but
it's
nice
to
have
there
is
another
convenient
feature-
is
having
the
saved
replies
in
your
jenkins
con
sorry
in
your
github
configure,
so
that
you
can
just
click
the
little
drop
down
and
have
like
saved
trigger
messages
in
there,
which
is
what
I
do
for
like
the
copyright
checks
and
stuff
like
that
for
the
open
g9
project.
E
So
it
the
trigger
causes
a
bit
of
confusion,
because
everybody
thinks
it's
linked
to
the
bot
account,
but
it's
really
not
so
we
can
either
leave
it
as
is
as
genie
omar
or
we
can
link
it
to
the
new
name
or
some
other
name
or
some
other
trigger
altogether,
which
doesn't
have
an
ad.
So
it's
really
up
to
you.
A
E
A
Right,
well,
there's
no
dissension.
So,
yes,
we
do
have
to
communicate
that
to
the
to
the
committer
list,
though
so,
once
we
make
that
change,
people
have
to
know
how
to
launch
builds
again.
E
A
There's
the
omar
dead
list,
which
I'm
not
sure
how
widely
I
think,
you're,
probably
going
to
get
a
wider
audience
just
posting
on
just
post
on
the
general
channel
of
omr,
okay,
the
omar,
it's
like
pretty
much
every
committer
is
going
to
see
that.
E
A
Okay,
all
right
that
was
our
last
topic
for
this
week,
so
I've
created
the
empty
agenda
for
two
weeks
time.
So
if
anybody
has
any
topics
they
want
to
propose,
please
add
them
to
that
agenda
then.