Mercurial > hg > graal-compiler
annotate graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/WriteBarrierSnippets.java @ 8494:7c9dbc80fd7d
-Add more instrumentation
author | Christos Kotselidis <christos.kotselidis@oracle.com> |
---|---|
date | Tue, 26 Feb 2013 19:49:00 +0100 |
parents | 9412b1915547 |
children | 9131c075be7b |
rev | line source |
---|---|
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
1 /* |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
2 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
4 * |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
8 * |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
14 * |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
18 * |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
21 * questions. |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
22 */ |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.hotspot.snippets; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
24 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
25 import static com.oracle.graal.hotspot.snippets.HotSpotSnippetUtils.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
26 import static com.oracle.graal.snippets.SnippetTemplate.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
27 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
28 import com.oracle.graal.api.code.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
29 import com.oracle.graal.api.meta.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
30 import com.oracle.graal.hotspot.nodes.*; |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
31 import com.oracle.graal.nodes.extended.*; |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
32 import com.oracle.graal.nodes.spi.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
33 import com.oracle.graal.snippets.*; |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
34 import com.oracle.graal.snippets.Snippet.ConstantParameter; |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
35 import com.oracle.graal.snippets.Snippet.Parameter; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
36 import com.oracle.graal.snippets.SnippetTemplate.AbstractTemplates; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
37 import com.oracle.graal.snippets.SnippetTemplate.Arguments; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
38 import com.oracle.graal.snippets.SnippetTemplate.Key; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
39 import com.oracle.graal.word.*; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
40 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
41 public class WriteBarrierSnippets implements SnippetsInterface { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
42 |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
43 private static final boolean TRACE = true; |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
44 |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
45 @Snippet |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
46 public static void g1PreWriteBarrier(@Parameter("object") Object object, @Parameter("location") Object location, @ConstantParameter("doLoad") boolean doLoad) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
47 Word thread = thread(); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
48 trace(WriteBarrierSnippets.TRACE, "---------------G1 PRE Enter: 0x%016lx\n", thread); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
49 Pointer oop = Word.fromObject(object); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
50 Pointer field = Word.fromArray(object, location); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
51 Pointer previousOop = field.readWord(0); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
52 |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
53 Word markingAddress = thread.readWord(HotSpotSnippetUtils.g1SATBQueueMarkingOffset()); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
54 Word bufferAddress = thread.readWord(HotSpotSnippetUtils.g1SATBQueueBufferOffset()); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
55 Word indexAddress = thread.add(HotSpotSnippetUtils.g1SATBQueueIndexOffset()); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
56 Word indexValue = thread.readWord(HotSpotSnippetUtils.g1SATBQueueIndexOffset()); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
57 |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
58 trace(WriteBarrierSnippets.TRACE, " G1 PRE thread address: 0x%16lx\n", thread); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
59 trace(WriteBarrierSnippets.TRACE, " G1 PRE oop: 0x%16lx\n", oop); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
60 trace(WriteBarrierSnippets.TRACE, " G1 PRE field: 0x%16lx\n", field); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
61 trace(WriteBarrierSnippets.TRACE, " G1 PRE previous OOP: 0x%16lx\n", previousOop); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
62 trace(WriteBarrierSnippets.TRACE, " G1 PRE QueueMarkingOffset: 0x%016lx\n", Word.signed(HotSpotSnippetUtils.g1SATBQueueMarkingOffset())); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
63 trace(WriteBarrierSnippets.TRACE, " G1 PRE QueueBufferOffset: 0x%016lx\n", Word.signed(HotSpotSnippetUtils.g1SATBQueueBufferOffset())); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
64 trace(WriteBarrierSnippets.TRACE, " G1 PRE QueueIndexOffset: 0x%016lx\n", Word.signed(HotSpotSnippetUtils.g1SATBQueueIndexOffset())); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
65 trace(WriteBarrierSnippets.TRACE, " G1 PRE markingAddress: 0x%016lx\n", markingAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
66 trace(WriteBarrierSnippets.TRACE, " G1 PRE bufferAddress: 0x%016lx\n", bufferAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
67 trace(WriteBarrierSnippets.TRACE, " G1 PRE indexAddress: 0x%016lx\n", indexAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
68 trace(WriteBarrierSnippets.TRACE, " G1 PRE indexValue: 0x%016lx\n", indexValue);// in |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
69 // bytes |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
70 |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
71 if (markingAddress.notEqual(Word.zero())) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
72 if (doLoad) { |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
73 previousOop = field.readWord(0); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
74 trace(WriteBarrierSnippets.TRACE, " G1 PRE Do Load previous OOP: 0x%16lx\n", previousOop); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
75 } |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
76 if (previousOop.notEqual(Word.zero())) { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
77 if (indexValue.readInt(0) != 0) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
78 Word nextIndex = indexAddress.subtract(Word.signed(HotSpotSnippetUtils.wordSize())); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
79 Word nextIndexX = nextIndex; |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
80 Word logAddress = bufferAddress.add(nextIndexX); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
81 logAddress.writeWord(0, previousOop); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
82 indexAddress.writeWord(0, nextIndex); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
83 trace(WriteBarrierSnippets.TRACE, " G1 PRE nextIndexindex: 0x%016lx\n", nextIndex); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
84 } else { |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
85 WriteBarrierPostStubCall.call(object); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
86 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
87 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
88 } |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
89 |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
90 trace(WriteBarrierSnippets.TRACE, "---------------G1 PRE Exit: 0x%016lx\n", indexValue); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
91 |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
92 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
93 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
94 @Snippet |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
95 public static void g1PostWriteBarrier(@Parameter("object") Object object, @Parameter("value") Object value, @Parameter("location") Object location) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
96 Word thread = thread(); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
97 trace(WriteBarrierSnippets.TRACE, "##############G1 POST Enter: 0x%016lx\n", thread); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
98 |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
99 Pointer oop = Word.fromObject(object); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
100 Pointer field = Word.fromArray(object, location); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
101 Pointer writtenValue = Word.fromObject(value); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
102 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
103 Word bufferAddress = thread.readWord(HotSpotSnippetUtils.g1CardQueueBufferOffset()); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
104 Word indexAddress = thread.readWord(HotSpotSnippetUtils.g1CardQueueIndexOffset()); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
105 Word indexValue = thread.readWord(HotSpotSnippetUtils.g1CardQueueIndexOffset()); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
106 |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
107 trace(WriteBarrierSnippets.TRACE, " G1 POST thread address: 0x%16lx\n", thread); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
108 trace(WriteBarrierSnippets.TRACE, " G1 POST bufferAddress: 0x%016lx\n", bufferAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
109 trace(WriteBarrierSnippets.TRACE, " G1 POST indexAddress: 0x%016lx\n", indexAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
110 trace(WriteBarrierSnippets.TRACE, " G1 POST indexValue: 0x%016lx\n", indexValue); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
111 trace(WriteBarrierSnippets.TRACE, " G1 POST written value: 0x%016lx\n", writtenValue); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
112 |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
113 // Card Table |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
114 Word base = (Word) oop.unsignedShiftRight(cardTableShift()); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
115 long startAddress = cardTableStart(); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
116 int displacement = 0; |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
117 if (((int) startAddress) == startAddress) { |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
118 displacement = (int) startAddress; |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
119 } else { |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
120 base = base.add(Word.unsigned(cardTableStart())); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
121 } |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
122 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
123 // if (writtenValue.notEqual(Word.zero())) { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
124 Word xorResult = (((Word) field.xor(writtenValue)).unsignedShiftRight(HotSpotSnippetUtils.logOfHRGrainBytes())); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
125 trace(WriteBarrierSnippets.TRACE, " G1 POST xor result: 0x%016lx\n", xorResult); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
126 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
127 if (xorResult.notEqual(Word.zero())) { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
128 if (writtenValue.notEqual(Word.zero())) { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
129 Word cardValue = base.readWord(displacement); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
130 trace(WriteBarrierSnippets.TRACE, " G1 POST cardValue: 0x%016lx\n", cardValue); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
131 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
132 if (cardValue.notEqual(Word.zero())) { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
133 base.writeWord(displacement, Word.zero()); // smash zero into card |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
134 if (indexValue.readInt(0) != 0) { |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
135 Word nextIndex = indexAddress.subtract(Word.signed(HotSpotSnippetUtils.wordSize())); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
136 trace(WriteBarrierSnippets.TRACE, " G1 POST nextIndex: 0x%016lx\n", nextIndex); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
137 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
138 Word nextIndexX = nextIndex; |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
139 Word logAddress = bufferAddress.add(nextIndexX); |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
140 trace(WriteBarrierSnippets.TRACE, " G1 POST logAddress: 0x%016lx\n", logAddress); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
141 |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
142 logAddress.writeWord(0, base.add(displacement)); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
143 indexAddress.writeWord(0, nextIndex); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
144 } else { |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
145 WriteBarrierPostStubCall.call(object); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
146 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
147 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
148 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
149 } |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
150 // } else { Object clone intrinsic(?!) |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
151 // } |
8494
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
152 trace(WriteBarrierSnippets.TRACE, "#################G1 POST Exit: 0x%016lx\n", thread); |
7c9dbc80fd7d
-Add more instrumentation
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8493
diff
changeset
|
153 |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
154 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
155 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
156 private static void trace(boolean enabled, String format, WordBase value) { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
157 if (enabled) { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
158 Log.printf(format, value.rawValue()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
159 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
160 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
161 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
162 @Snippet |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
163 public static void serialFieldWriteBarrier(@Parameter("object") Object object) { |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
164 verifyOop(object); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
165 Pointer oop = Word.fromObject(object); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
166 Word base = (Word) oop.unsignedShiftRight(cardTableShift()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
167 long startAddress = cardTableStart(); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
168 int displacement = 0; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
169 if (((int) startAddress) == startAddress) { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
170 displacement = (int) startAddress; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
171 } else { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
172 base = base.add(Word.unsigned(cardTableStart())); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
173 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
174 base.writeWord(displacement, Word.zero()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
175 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
176 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
177 @Snippet |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
178 public static void serialArrayWriteBarrier(@Parameter("object") Object object, @Parameter("location") Object location) { |
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
179 Pointer oop = Word.fromArray(object, location); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
180 Word base = (Word) oop.unsignedShiftRight(cardTableShift()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
181 long startAddress = cardTableStart(); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
182 int displacement = 0; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
183 if (((int) startAddress) == startAddress) { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
184 displacement = (int) startAddress; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
185 } else { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
186 base = base.add(Word.unsigned(cardTableStart())); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
187 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
188 base.writeWord(displacement, Word.zero()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
189 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
190 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
191 public static class Templates extends AbstractTemplates<WriteBarrierSnippets> { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
192 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
193 private final ResolvedJavaMethod serialFieldWriteBarrier; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
194 private final ResolvedJavaMethod serialArrayWriteBarrier; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
195 private final ResolvedJavaMethod g1PreWriteBarrier; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
196 private final ResolvedJavaMethod g1PostWriteBarrier; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
197 private final boolean useG1GC; |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
198 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
199 public Templates(CodeCacheProvider runtime, Assumptions assumptions, TargetDescription target, boolean useG1GC) { |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
200 super(runtime, assumptions, target, WriteBarrierSnippets.class); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
201 serialFieldWriteBarrier = snippet("serialFieldWriteBarrier", Object.class); |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
202 serialArrayWriteBarrier = snippet("serialArrayWriteBarrier", Object.class, Object.class); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
203 g1PreWriteBarrier = snippet("g1PreWriteBarrier", Object.class, Object.class, boolean.class); |
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
204 g1PostWriteBarrier = snippet("g1PostWriteBarrier", Object.class, Object.class, Object.class); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
205 this.useG1GC = useG1GC; |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
206 System.out.println(" useG1GC? " + (useG1GC ? "true" : "false")); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
207 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
208 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
209 public void lower(ArrayWriteBarrier arrayWriteBarrier, @SuppressWarnings("unused") LoweringTool tool) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
210 ResolvedJavaMethod method = serialArrayWriteBarrier; |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
211 Key key = new Key(method); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
212 Arguments arguments = new Arguments(); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
213 arguments.add("object", arrayWriteBarrier.object()); |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
214 arguments.add("location", arrayWriteBarrier.location()); |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
215 SnippetTemplate template = cache.get(key, assumptions); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
216 template.instantiate(runtime, arrayWriteBarrier, DEFAULT_REPLACER, arguments); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
217 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
218 |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
219 public void lower(FieldWriteBarrier fieldWriteBarrier, @SuppressWarnings("unused") LoweringTool tool) { |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
220 ResolvedJavaMethod method = serialFieldWriteBarrier; |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
221 Key key = new Key(method); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
222 Arguments arguments = new Arguments(); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
223 arguments.add("object", fieldWriteBarrier.object()); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
224 SnippetTemplate template = cache.get(key, assumptions); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
225 template.instantiate(runtime, fieldWriteBarrier, DEFAULT_REPLACER, arguments); |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
226 } |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
227 |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
228 public void lower(WriteBarrierPre writeBarrierPre, @SuppressWarnings("unused") LoweringTool tool) { |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
229 ResolvedJavaMethod method = g1PreWriteBarrier; |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
230 Key key = new Key(method); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
231 key.add("doLoad", writeBarrierPre.doLoad()); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
232 Arguments arguments = new Arguments(); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
233 arguments.add("object", writeBarrierPre.object()); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
234 arguments.add("location", writeBarrierPre.location()); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
235 SnippetTemplate template = cache.get(key, assumptions); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
236 template.instantiate(runtime, writeBarrierPre, DEFAULT_REPLACER, arguments); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
237 } |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
238 |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
239 public void lower(WriteBarrierPost writeBarrierPost, @SuppressWarnings("unused") LoweringTool tool) { |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
240 ResolvedJavaMethod method = g1PostWriteBarrier; |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
241 Key key = new Key(method); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
242 Arguments arguments = new Arguments(); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
243 arguments.add("object", writeBarrierPost.object()); |
8493
9412b1915547
-More G1 WB Integration-Addition of GenerateLEANode for G1 previous value equalities
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8492
diff
changeset
|
244 arguments.add("location", writeBarrierPost.location()); |
8491
9cf5e381df05
-More Porting
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8490
diff
changeset
|
245 arguments.add("value", writeBarrierPost.value()); |
8490
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
246 SnippetTemplate template = cache.get(key, assumptions); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
247 template.instantiate(runtime, writeBarrierPost, DEFAULT_REPLACER, arguments); |
1567c6cc6561
Towards porting G1 WBs
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8489
diff
changeset
|
248 } |
8492
286a49d423c9
-Snippetization of CMS WriteBarriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
8491
diff
changeset
|
249 |
8488
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
250 } |
225c984588ee
-Snippetization of CMS write barriers
Christos Kotselidis <christos.kotselidis@oracle.com>
parents:
diff
changeset
|
251 } |