1 /* |
1 /* |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
1374 } |
1374 } |
1375 }; |
1375 }; |
1376 |
1376 |
1377 //------------------------------Prefetch--------------------------------------- |
1377 //------------------------------Prefetch--------------------------------------- |
1378 |
1378 |
1379 // Non-faulting prefetch load. Prefetch for many reads. |
|
1380 class PrefetchReadNode : public Node { |
|
1381 public: |
|
1382 PrefetchReadNode(Node *abio, Node *adr) : Node(0,abio,adr) {} |
|
1383 virtual int Opcode() const; |
|
1384 virtual uint ideal_reg() const { return NotAMachineReg; } |
|
1385 virtual uint match_edge(uint idx) const { return idx==2; } |
|
1386 virtual const Type *bottom_type() const { return Type::ABIO; } |
|
1387 }; |
|
1388 |
|
1389 // Non-faulting prefetch load. Prefetch for many reads & many writes. |
|
1390 class PrefetchWriteNode : public Node { |
|
1391 public: |
|
1392 PrefetchWriteNode(Node *abio, Node *adr) : Node(0,abio,adr) {} |
|
1393 virtual int Opcode() const; |
|
1394 virtual uint ideal_reg() const { return NotAMachineReg; } |
|
1395 virtual uint match_edge(uint idx) const { return idx==2; } |
|
1396 virtual const Type *bottom_type() const { return Type::ABIO; } |
|
1397 }; |
|
1398 |
|
1399 // Allocation prefetch which may fault, TLAB size have to be adjusted. |
1379 // Allocation prefetch which may fault, TLAB size have to be adjusted. |
1400 class PrefetchAllocationNode : public Node { |
1380 class PrefetchAllocationNode : public Node { |
1401 public: |
1381 public: |
1402 PrefetchAllocationNode(Node *mem, Node *adr) : Node(0,mem,adr) {} |
1382 PrefetchAllocationNode(Node *mem, Node *adr) : Node(0,mem,adr) {} |
1403 virtual int Opcode() const; |
1383 virtual int Opcode() const; |