Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/g1/g1_specialized_oop_closures.hpp @ 4839:b4ebad3520bb
7133038: G1: Some small profile based optimizations
Summary: Some minor profile based optimizations. Reduce the number of branches and branch mispredicts by removing some virtual calls, through closure specalization, and refactoring some conditional statements.
Reviewed-by: brutisso, tonyp
author | johnc |
---|---|
date | Thu, 26 Jan 2012 14:14:55 -0800 |
parents | eeae91c9baba |
children | da91efe96a93 |
comparison
equal
deleted
inserted
replaced
4838:a5244e07b761 | 4839:b4ebad3520bb |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2001, 2012, 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. |
30 // non-virtually, using a mechanism defined in this file. Extend these | 30 // non-virtually, using a mechanism defined in this file. Extend these |
31 // macros in the obvious way to add specializations for new closures. | 31 // macros in the obvious way to add specializations for new closures. |
32 | 32 |
33 // Forward declarations. | 33 // Forward declarations. |
34 enum G1Barrier { | 34 enum G1Barrier { |
35 G1BarrierNone, G1BarrierRS, G1BarrierEvac | 35 G1BarrierNone, |
36 G1BarrierRS, | |
37 G1BarrierEvac | |
36 }; | 38 }; |
37 | 39 |
38 template<bool do_gen_barrier, G1Barrier barrier, | 40 template<bool do_gen_barrier, G1Barrier barrier, bool do_mark_object> |
39 bool do_mark_object> | |
40 class G1ParCopyClosure; | 41 class G1ParCopyClosure; |
42 | |
41 class G1ParScanClosure; | 43 class G1ParScanClosure; |
42 class G1ParPushHeapRSClosure; | 44 class G1ParPushHeapRSClosure; |
43 | 45 |
44 typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacClosure; | 46 typedef G1ParCopyClosure<false, G1BarrierEvac, false> G1ParScanHeapEvacClosure; |
45 | 47 |
46 class FilterIntoCSClosure; | 48 class FilterIntoCSClosure; |
47 class FilterOutOfRegionClosure; | 49 class FilterOutOfRegionClosure; |
48 class G1CMOopClosure; | 50 class G1CMOopClosure; |
51 class G1RootRegionScanClosure; | |
52 | |
53 // Specialized oop closures from g1RemSet.cpp | |
54 class G1Mux2Closure; | |
55 class G1TriggerClosure; | |
56 class G1InvokeIfNotTriggeredClosure; | |
57 class G1UpdateRSOrPushRefOopClosure; | |
49 | 58 |
50 #ifdef FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES | 59 #ifdef FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES |
51 #error "FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES already defined." | 60 #error "FURTHER_SPECIALIZED_OOP_OOP_ITERATE_CLOSURES already defined." |
52 #endif | 61 #endif |
53 | 62 |
55 f(G1ParScanHeapEvacClosure,_nv) \ | 64 f(G1ParScanHeapEvacClosure,_nv) \ |
56 f(G1ParScanClosure,_nv) \ | 65 f(G1ParScanClosure,_nv) \ |
57 f(G1ParPushHeapRSClosure,_nv) \ | 66 f(G1ParPushHeapRSClosure,_nv) \ |
58 f(FilterIntoCSClosure,_nv) \ | 67 f(FilterIntoCSClosure,_nv) \ |
59 f(FilterOutOfRegionClosure,_nv) \ | 68 f(FilterOutOfRegionClosure,_nv) \ |
60 f(G1CMOopClosure,_nv) | 69 f(G1CMOopClosure,_nv) \ |
70 f(G1RootRegionScanClosure,_nv) \ | |
71 f(G1Mux2Closure,_nv) \ | |
72 f(G1TriggerClosure,_nv) \ | |
73 f(G1InvokeIfNotTriggeredClosure,_nv) \ | |
74 f(G1UpdateRSOrPushRefOopClosure,_nv) | |
61 | 75 |
62 #ifdef FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES | 76 #ifdef FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES |
63 #error "FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES already defined." | 77 #error "FURTHER_SPECIALIZED_SINCE_SAVE_MARKS_CLOSURES already defined." |
64 #endif | 78 #endif |
65 | 79 |