Mercurial > hg > truffle
annotate graal/com.oracle.graal.lir.amd64/src/com/oracle/graal/lir/amd64/AMD64Move.java @ 7905:38a597987357
Common base class for Load and Store.
author | Roland Schatz <roland.schatz@oracle.com> |
---|---|
date | Thu, 28 Feb 2013 14:15:24 +0100 |
parents | 14b52a260099 |
children | 775745294caa |
rev | line source |
---|---|
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
1 /* |
4181
319860ae697a
Simplify FrameMap: make offsets of spill slots and outgoing parameters independent so that they can be allocated at the same time, eliminating the separate phases. This makes the separate StackBlock unnecesary. Change CiStackSlot to use byte offsets instead of spill slot index. This makes CiTarget.spillSlotSize unnecessary.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4142
diff
changeset
|
2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
4 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
8 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
14 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
18 * |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
21 * questions. |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
22 */ |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
23 package com.oracle.graal.lir.amd64; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
24 |
5547
b6617d13ea44
Dropping Ci* prefixes. Some additional renamings in the api.code interface.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5539
diff
changeset
|
25 import static com.oracle.graal.api.code.ValueUtil.*; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
26 import static com.oracle.graal.lir.LIRInstruction.OperandFlag.*; |
7882
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
27 |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
28 import static java.lang.Double.*; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
29 import static java.lang.Float.*; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
30 |
6580
d56d600819fe
moved AMD64 into its own (new) project: com.oracle.graal.amd64
Doug Simon <doug.simon@oracle.com>
parents:
6539
diff
changeset
|
31 import com.oracle.graal.amd64.*; |
7882
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
32 import com.oracle.graal.api.code.*; |
5507
dc71b06d09f8
Moving classes from cri.ri to api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5506
diff
changeset
|
33 import com.oracle.graal.api.meta.*; |
6531
4afe23aa0a00
renamed packages: com.oracle.max.asm... -> com.oracle.graal.asm...
Doug Simon <doug.simon@oracle.com>
parents:
6493
diff
changeset
|
34 import com.oracle.graal.asm.*; |
4afe23aa0a00
renamed packages: com.oracle.max.asm... -> com.oracle.graal.asm...
Doug Simon <doug.simon@oracle.com>
parents:
6493
diff
changeset
|
35 import com.oracle.graal.asm.amd64.*; |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
36 import com.oracle.graal.graph.*; |
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
37 import com.oracle.graal.lir.*; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
38 import com.oracle.graal.lir.LIRInstruction.Opcode; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
39 import com.oracle.graal.lir.StandardOp.MoveOp; |
5060
4ed4295ce15f
Update import statements.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5059
diff
changeset
|
40 import com.oracle.graal.lir.asm.*; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
41 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
42 public class AMD64Move { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
43 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
44 @Opcode("MOVE") |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
45 public static class SpillMoveOp extends AMD64LIRInstruction implements MoveOp { |
7881 | 46 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
47 @Def({REG, STACK}) protected Value result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
48 @Use({REG, STACK, CONST}) protected Value input; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
49 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
50 public SpillMoveOp(Value result, Value input) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
51 this.result = result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
52 this.input = input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
53 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
54 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
55 @Override |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
56 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
57 move(tasm, masm, getResult(), getInput()); |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
58 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
59 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
60 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
61 public Value getInput() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
62 return input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
63 } |
7881 | 64 |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
65 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
66 public Value getResult() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
67 return result; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
68 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
69 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
70 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
71 @Opcode("MOVE") |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
72 public static class MoveToRegOp extends AMD64LIRInstruction implements MoveOp { |
7881 | 73 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
74 @Def({REG, HINT}) protected Value result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
75 @Use({REG, STACK, CONST}) protected Value input; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
76 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
77 public MoveToRegOp(Value result, Value input) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
78 this.result = result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
79 this.input = input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
80 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
81 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
82 @Override |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
83 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
84 move(tasm, masm, getResult(), getInput()); |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
85 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
86 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
87 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
88 public Value getInput() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
89 return input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
90 } |
7881 | 91 |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
92 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
93 public Value getResult() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
94 return result; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
95 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
96 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
97 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
98 @Opcode("MOVE") |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
99 public static class MoveFromRegOp extends AMD64LIRInstruction implements MoveOp { |
7881 | 100 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
101 @Def({REG, STACK}) protected Value result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
102 @Use({REG, CONST, HINT}) protected Value input; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
103 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
104 public MoveFromRegOp(Value result, Value input) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
105 this.result = result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
106 this.input = input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
107 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
108 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
109 @Override |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
110 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
111 move(tasm, masm, getResult(), getInput()); |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
112 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
113 |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
114 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
115 public Value getInput() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
116 return input; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
117 } |
7881 | 118 |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
119 @Override |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
120 public Value getResult() { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
121 return result; |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
122 } |
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
123 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
124 |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
125 public abstract static class MemOp extends AMD64LIRInstruction { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
126 |
7880
eb41b39fd1e4
Convert Value fields to Address.
Roland Schatz <roland.schatz@oracle.com>
parents:
7839
diff
changeset
|
127 @Use({ADDR}) protected AMD64Address address; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
128 @State protected LIRFrameState state; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
129 |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
130 public MemOp(AMD64Address address, LIRFrameState state) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
131 this.address = address; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
132 this.state = state; |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
133 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
134 |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
135 protected abstract void emitMemAccess(AMD64MacroAssembler masm); |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
136 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
137 @Override |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
138 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
139 if (state != null) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
140 tasm.recordImplicitException(masm.codeBuffer.position(), state); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
141 } |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
142 emitMemAccess(masm); |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
143 } |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
144 } |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
145 |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
146 public static class LoadOp extends MemOp { |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
147 |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
148 @Def({REG}) protected Value result; |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
149 |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
150 public LoadOp(Value result, AMD64Address address, LIRFrameState state) { |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
151 super(address, state); |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
152 this.result = result; |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
153 } |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
154 |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
155 @Override |
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
156 public void emitMemAccess(AMD64MacroAssembler masm) { |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
157 switch (address.getKind()) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
158 case Boolean: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
159 case Byte: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
160 masm.movsxb(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
161 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
162 case Char: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
163 masm.movzxl(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
164 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
165 case Short: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
166 masm.movswl(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
167 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
168 case Int: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
169 masm.movslq(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
170 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
171 case Long: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
172 masm.movq(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
173 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
174 case Float: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
175 masm.movflt(asFloatReg(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
176 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
177 case Double: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
178 masm.movdbl(asDoubleReg(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
179 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
180 case Object: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
181 masm.movq(asRegister(result), address); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
182 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
183 default: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
184 throw GraalInternalError.shouldNotReachHere(); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
185 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
186 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
187 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
188 |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
189 public static class StoreOp extends MemOp { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
190 |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
191 @Use({REG}) protected Value input; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
192 |
7880
eb41b39fd1e4
Convert Value fields to Address.
Roland Schatz <roland.schatz@oracle.com>
parents:
7839
diff
changeset
|
193 public StoreOp(AMD64Address address, Value input, LIRFrameState state) { |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
194 super(address, state); |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
195 this.input = input; |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
196 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
197 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
198 @Override |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
199 public void emitMemAccess(AMD64MacroAssembler masm) { |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
200 assert isRegister(input); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
201 switch (address.getKind()) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
202 case Boolean: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
203 case Byte: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
204 masm.movb(address, asRegister(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
205 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
206 case Char: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
207 case Short: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
208 masm.movw(address, asRegister(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
209 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
210 case Int: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
211 masm.movl(address, asRegister(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
212 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
213 case Long: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
214 masm.movq(address, asRegister(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
215 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
216 case Float: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
217 masm.movflt(address, asFloatReg(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
218 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
219 case Double: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
220 masm.movsd(address, asDoubleReg(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
221 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
222 case Object: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
223 masm.movq(address, asRegister(input)); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
224 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
225 default: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
226 throw GraalInternalError.shouldNotReachHere(); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
227 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
228 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
229 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
230 |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
231 public static class StoreConstantOp extends MemOp { |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
232 |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
233 @Use({CONST}) protected Constant input; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
234 |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
235 public StoreConstantOp(AMD64Address address, Constant input, LIRFrameState state) { |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
236 super(address, state); |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
237 this.input = input; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
238 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
239 |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
240 @Override |
7905
38a597987357
Common base class for Load and Store.
Roland Schatz <roland.schatz@oracle.com>
parents:
7884
diff
changeset
|
241 public void emitMemAccess(AMD64MacroAssembler masm) { |
7884
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
242 switch (address.getKind()) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
243 case Boolean: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
244 case Byte: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
245 masm.movb(address, input.asInt() & 0xFF); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
246 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
247 case Char: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
248 case Short: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
249 masm.movw(address, input.asInt() & 0xFFFF); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
250 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
251 case Int: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
252 masm.movl(address, input.asInt()); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
253 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
254 case Long: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
255 if (NumUtil.isInt(input.asLong())) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
256 masm.movslq(address, (int) input.asLong()); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
257 } else { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
258 throw GraalInternalError.shouldNotReachHere("Cannot store 64-bit constants to memory"); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
259 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
260 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
261 case Float: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
262 masm.movl(address, floatToRawIntBits(input.asFloat())); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
263 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
264 case Double: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
265 throw GraalInternalError.shouldNotReachHere("Cannot store 64-bit constants to memory"); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
266 case Object: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
267 if (input.isNull()) { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
268 masm.movptr(address, 0); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
269 } else { |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
270 throw GraalInternalError.shouldNotReachHere("Cannot store 64-bit constants to memory"); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
271 } |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
272 break; |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
273 default: |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
274 throw GraalInternalError.shouldNotReachHere(); |
14b52a260099
Separate store op for storing constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
7882
diff
changeset
|
275 } |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
276 } |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
277 } |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
278 |
7881 | 279 public static class LeaOp extends AMD64LIRInstruction { |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
280 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
281 @Def({REG}) protected Value result; |
7882
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
282 @Use({ADDR, UNINITIALIZED}) protected AMD64Address address; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
283 |
7882
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
284 public LeaOp(Value result, AMD64Address address) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
285 this.result = result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
286 this.address = address; |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
287 } |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
288 |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
289 @Override |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
290 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
7882
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
291 masm.leaq(asLongReg(result), address); |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
292 } |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
293 } |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
294 |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
295 public static class StackLeaOp extends AMD64LIRInstruction { |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
296 |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
297 @Def({REG}) protected Value result; |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
298 @Use({STACK, UNINITIALIZED}) protected StackSlot slot; |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
299 |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
300 public StackLeaOp(Value result, StackSlot slot) { |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
301 this.result = result; |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
302 this.slot = slot; |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
303 } |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
304 |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
305 @Override |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
306 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
124b28240347
Separate STACK and ADDR nodes in LIR.
Roland Schatz <roland.schatz@oracle.com>
parents:
7881
diff
changeset
|
307 masm.leaq(asLongReg(result), (AMD64Address) tasm.asAddress(slot)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
308 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
309 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
310 |
7881 | 311 public static class MembarOp extends AMD64LIRInstruction { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
312 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
313 private final int barriers; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
314 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
315 public MembarOp(final int barriers) { |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
316 this.barriers = barriers; |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
317 } |
4245
75c620f90ab9
Support stack-operands and register hints in new register allocator API
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4231
diff
changeset
|
318 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
319 @Override |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
320 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
321 masm.membar(barriers); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
322 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
323 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
324 |
7881 | 325 public static class NullCheckOp extends AMD64LIRInstruction { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
326 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
327 @Use protected Value input; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
328 @State protected LIRFrameState state; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
329 |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
330 public NullCheckOp(Variable input, LIRFrameState state) { |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
331 this.input = input; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
332 this.state = state; |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
333 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
334 |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
335 @Override |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
336 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
337 tasm.recordImplicitException(masm.codeBuffer.position(), state); |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
338 masm.nullCheck(asRegister(input)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
339 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
340 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
341 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
342 @Opcode("CAS") |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
343 public static class CompareAndSwapOp extends AMD64LIRInstruction { |
7881 | 344 |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
345 @Def protected Value result; |
7880
eb41b39fd1e4
Convert Value fields to Address.
Roland Schatz <roland.schatz@oracle.com>
parents:
7839
diff
changeset
|
346 @Use({ADDR}) protected AMD64Address address; |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
347 @Use protected Value cmpValue; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
348 @Use protected Value newValue; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
349 |
7880
eb41b39fd1e4
Convert Value fields to Address.
Roland Schatz <roland.schatz@oracle.com>
parents:
7839
diff
changeset
|
350 public CompareAndSwapOp(Value result, AMD64Address address, Value cmpValue, Value newValue) { |
5733
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
351 this.result = result; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
352 this.address = address; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
353 this.cmpValue = cmpValue; |
141b15521a39
use annotated fields for operands of LIR instructions
Christian Wimmer <christian.wimmer@oracle.com>
parents:
5547
diff
changeset
|
354 this.newValue = newValue; |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
355 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
356 |
4323
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
357 @Override |
df5547057954
Remove LIROpcode and use non-anonymous subclasses of LIRInstruction
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4314
diff
changeset
|
358 public void emitCode(TargetMethodAssembler tasm, AMD64MacroAssembler masm) { |
7880
eb41b39fd1e4
Convert Value fields to Address.
Roland Schatz <roland.schatz@oracle.com>
parents:
7839
diff
changeset
|
359 compareAndSwap(tasm, masm, result, address, cmpValue, newValue); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
360 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
361 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
362 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
363 public static void move(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Value input) { |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
364 if (isRegister(input)) { |
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
365 if (isRegister(result)) { |
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
366 reg2reg(masm, result, input); |
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
367 } else if (isStackSlot(result)) { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
368 reg2stack(tasm, masm, result, input); |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
369 } else { |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
370 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
371 } |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
372 } else if (isStackSlot(input)) { |
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
373 if (isRegister(result)) { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
374 stack2reg(tasm, masm, result, input); |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
375 } else { |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
376 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
377 } |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
378 } else if (isConstant(input)) { |
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
379 if (isRegister(result)) { |
5538
e18ba36bfebc
Renamed RiConstant => Constant.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5510
diff
changeset
|
380 const2reg(tasm, masm, result, (Constant) input); |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
381 } else if (isStackSlot(result)) { |
5538
e18ba36bfebc
Renamed RiConstant => Constant.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5510
diff
changeset
|
382 const2stack(tasm, masm, result, (Constant) input); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
383 } else { |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
384 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
385 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
386 } else { |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
387 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
388 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
389 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
390 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
391 private static void reg2reg(AMD64MacroAssembler masm, Value result, Value input) { |
6474
f2624e472426
ignore kinds when checking for redundant register to register move
Doug Simon <doug.simon@oracle.com>
parents:
6329
diff
changeset
|
392 if (asRegister(input).equals(asRegister(result))) { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
393 return; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
394 } |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5733
diff
changeset
|
395 switch (input.getKind()) { |
7881 | 396 case Int: |
397 masm.movl(asRegister(result), asRegister(input)); | |
398 break; | |
399 case Long: | |
400 masm.movq(asRegister(result), asRegister(input)); | |
401 break; | |
402 case Float: | |
403 masm.movflt(asFloatReg(result), asFloatReg(input)); | |
404 break; | |
405 case Double: | |
406 masm.movdbl(asDoubleReg(result), asDoubleReg(input)); | |
407 break; | |
408 case Object: | |
409 masm.movq(asRegister(result), asRegister(input)); | |
410 break; | |
411 default: | |
412 throw GraalInternalError.shouldNotReachHere("kind=" + result.getKind()); | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
413 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
414 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
415 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
416 private static void reg2stack(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Value input) { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
417 AMD64Address dest = (AMD64Address) tasm.asAddress(result); |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5733
diff
changeset
|
418 switch (input.getKind()) { |
7881 | 419 case Int: |
420 masm.movl(dest, asRegister(input)); | |
421 break; | |
422 case Long: | |
423 masm.movq(dest, asRegister(input)); | |
424 break; | |
425 case Float: | |
426 masm.movflt(dest, asFloatReg(input)); | |
427 break; | |
428 case Double: | |
429 masm.movsd(dest, asDoubleReg(input)); | |
430 break; | |
431 case Object: | |
432 masm.movq(dest, asRegister(input)); | |
433 break; | |
434 default: | |
435 throw GraalInternalError.shouldNotReachHere(); | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
436 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
437 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
438 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
439 private static void stack2reg(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Value input) { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
440 AMD64Address src = (AMD64Address) tasm.asAddress(input); |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5733
diff
changeset
|
441 switch (input.getKind()) { |
7881 | 442 case Int: |
443 masm.movl(asRegister(result), src); | |
444 break; | |
445 case Long: | |
446 masm.movq(asRegister(result), src); | |
447 break; | |
448 case Float: | |
449 masm.movflt(asFloatReg(result), src); | |
450 break; | |
451 case Double: | |
452 masm.movdbl(asDoubleReg(result), src); | |
453 break; | |
454 case Object: | |
455 masm.movq(asRegister(result), src); | |
456 break; | |
457 default: | |
458 throw GraalInternalError.shouldNotReachHere(); | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
459 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
460 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
461 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
462 private static void const2reg(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Constant input) { |
7881 | 463 /* |
464 * Note: we use the kind of the input operand (and not the kind of the result operand) | |
465 * because they don't match in all cases. For example, an object constant can be loaded to a | |
466 * long register when unsafe casts occurred (e.g., for a write barrier where arithmetic | |
467 * operations are then performed on the pointer). | |
468 */ | |
6539
2463eb24b644
Cleanup of Graal API: Rename methods so that it follows the getXxx naming convention and so that they are similar to the names of the java.lang.reflect classes. Remove unused methods.
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6531
diff
changeset
|
469 switch (input.getKind().getStackKind()) { |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
470 case Int: |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
471 if (tasm.runtime.needsDataPatch(input)) { |
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
472 tasm.recordDataReferenceInCode(input, 0, true); |
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
473 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
474 // Do not optimize with an XOR as this instruction may be between |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
475 // a CMP and a Jcc in which case the XOR will modify the condition |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
476 // flags and interfere with the Jcc. |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
477 masm.movl(asRegister(result), input.asInt()); |
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
478 |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
479 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
480 case Long: |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
481 if (tasm.runtime.needsDataPatch(input)) { |
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
482 tasm.recordDataReferenceInCode(input, 0, true); |
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
483 } |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
484 // Do not optimize with an XOR as this instruction may be between |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
485 // a CMP and a Jcc in which case the XOR will modify the condition |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
486 // flags and interfere with the Jcc. |
4581
8f985001dc27
Use kind of input operand (instead of result operand) to determine the type of moves, because an Object constant can be loaded to a Long register for unsafe operation.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4525
diff
changeset
|
487 masm.movq(asRegister(result), input.asLong()); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
488 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
489 case Float: |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
490 // This is *not* the same as 'constant == 0.0f' in the case where constant is -0.0f |
4581
8f985001dc27
Use kind of input operand (instead of result operand) to determine the type of moves, because an Object constant can be loaded to a Long register for unsafe operation.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4525
diff
changeset
|
491 if (Float.floatToRawIntBits(input.asFloat()) == Float.floatToRawIntBits(0.0f)) { |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
492 assert !tasm.runtime.needsDataPatch(input); |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
493 masm.xorps(asFloatReg(result), asFloatReg(result)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
494 } else { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
495 masm.movflt(asFloatReg(result), (AMD64Address) tasm.asFloatConstRef(input)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
496 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
497 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
498 case Double: |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
499 // This is *not* the same as 'constant == 0.0d' in the case where constant is -0.0d |
4581
8f985001dc27
Use kind of input operand (instead of result operand) to determine the type of moves, because an Object constant can be loaded to a Long register for unsafe operation.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4525
diff
changeset
|
500 if (Double.doubleToRawLongBits(input.asDouble()) == Double.doubleToRawLongBits(0.0d)) { |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
501 assert !tasm.runtime.needsDataPatch(input); |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
502 masm.xorpd(asDoubleReg(result), asDoubleReg(result)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
503 } else { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
504 masm.movdbl(asDoubleReg(result), (AMD64Address) tasm.asDoubleConstRef(input)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
505 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
506 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
507 case Object: |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
508 // Do not optimize with an XOR as this instruction may be between |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
509 // a CMP and a Jcc in which case the XOR will modify the condition |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
510 // flags and interfere with the Jcc. |
4581
8f985001dc27
Use kind of input operand (instead of result operand) to determine the type of moves, because an Object constant can be loaded to a Long register for unsafe operation.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4525
diff
changeset
|
511 if (input.isNull()) { |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
512 masm.movq(asRegister(result), 0x0L); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
513 } else if (tasm.target.inlineObjects) { |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
514 tasm.recordDataReferenceInCode(input, 0, true); |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
515 masm.movq(asRegister(result), 0xDEADDEADDEADDEADL); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
516 } else { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
517 masm.movq(asRegister(result), (AMD64Address) tasm.recordDataReferenceInCode(input, 0, false)); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
518 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
519 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
520 default: |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
521 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
522 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
523 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
524 |
5539
bc647d8b0080
Renaming RiValue => Value.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5538
diff
changeset
|
525 private static void const2stack(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, Constant input) { |
6996
eec373d34caf
added support for annotated Constants and used it to track Klass* values in Graal and register them in the metadata section of a nmethod during code installation
Doug Simon <doug.simon@oracle.com>
parents:
6580
diff
changeset
|
526 assert !tasm.runtime.needsDataPatch(input); |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
527 AMD64Address dest = (AMD64Address) tasm.asAddress(result); |
6539
2463eb24b644
Cleanup of Graal API: Rename methods so that it follows the getXxx naming convention and so that they are similar to the names of the java.lang.reflect classes. Remove unused methods.
Christian Wimmer <christian.wimmer@oracle.com>
parents:
6531
diff
changeset
|
528 switch (input.getKind().getStackKind()) { |
7881 | 529 case Int: |
530 masm.movl(dest, input.asInt()); | |
531 break; | |
532 case Long: | |
533 masm.movlong(dest, input.asLong()); | |
534 break; | |
535 case Float: | |
536 masm.movl(dest, floatToRawIntBits(input.asFloat())); | |
537 break; | |
538 case Double: | |
539 masm.movlong(dest, doubleToRawLongBits(input.asDouble())); | |
540 break; | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
541 case Object: |
4581
8f985001dc27
Use kind of input operand (instead of result operand) to determine the type of moves, because an Object constant can be loaded to a Long register for unsafe operation.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4525
diff
changeset
|
542 if (input.isNull()) { |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
543 masm.movlong(dest, 0L); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
544 } else { |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
545 throw GraalInternalError.shouldNotReachHere("Non-null object constants must be in register"); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
546 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
547 break; |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
548 default: |
4524
dcc8f5c6f394
Refactorings to prepare for LIR project splitting
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4323
diff
changeset
|
549 throw GraalInternalError.shouldNotReachHere(); |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
550 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
551 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
552 |
7839
838293a77af7
Make Address class platform specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
7827
diff
changeset
|
553 protected static void compareAndSwap(TargetMethodAssembler tasm, AMD64MacroAssembler masm, Value result, AMD64Address address, Value cmpValue, Value newValue) { |
4183
9e0c1b4cfef5
Move all isXxx and asXxx out of CiValue and into their own util class.
Christian Wimmer <Christian.Wimmer@Oracle.com>
parents:
4181
diff
changeset
|
554 assert asRegister(cmpValue) == AMD64.rax && asRegister(result) == AMD64.rax; |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
555 |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
556 if (tasm.target.isMP) { |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
557 masm.lock(); |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
558 } |
6329
92bc58dc5b5e
More clean up and documentation in api.code and api.meta.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
5733
diff
changeset
|
559 switch (cmpValue.getKind()) { |
7881 | 560 case Int: |
561 masm.cmpxchgl(asRegister(newValue), address); | |
562 break; | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
563 case Long: |
7881 | 564 case Object: |
565 masm.cmpxchgq(asRegister(newValue), address); | |
566 break; | |
567 default: | |
568 throw GraalInternalError.shouldNotReachHere(); | |
3733
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
569 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
570 } |
e233f5660da4
Added Java files from Maxine project.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
571 } |