894 Commits

Author SHA1 Message Date
Tom Rodriguez
6f63c6e88b 6663848: assert(i < Max(),"oob") in C2 with -Xcomp
NeverBranchNodes aren't handled properly

Reviewed-by: kvn, sgoldman, rasbold, jrose
2008-04-24 11:13:03 -07:00
Vladimir Kozlov
4e3444d0ce 6625997: CastPP, CheckCastPP and Proj nodes are not dead loop safe
EA and initialization optimizations could bypass these nodes.

Reviewed-by: rasbold, never
2008-04-23 19:09:16 -07:00
Tom Rodriguez
041877583d 6601321: Assert(j == 1 || b->_nodes[j-1]->is_Phi(),"CreateEx must be first instruction in block")
Reviewed-by: kvn, rasbold, sgoldman, jrose
2008-04-23 13:57:14 -07:00
Vladimir Kozlov
69155d87f9 6689060: Escape Analysis does not work with Compressed Oops
64-bits VM crashes with -XX:+AggresiveOpts (Escape Analysis + Compressed Oops)

Reviewed-by: never, sgoldman
2008-04-23 11:20:36 -07:00
Vladimir Kozlov
df8fc19aac 6686791: Side effect in NumberFormat tests with -server -Xcomp
Optimization in CmpPNode::sub() removed the valid compare instruction because of false positive answer from detect_dominating_control().

Reviewed-by: jrose, sgoldman
2008-04-16 19:19:48 -07:00
Coleen Phillimore
4a831d45f0 6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv

Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
2008-04-13 17:43:42 -04:00
Chuck Rasbold
ba411c2466 6684385: Loop unswitching crashes without LoopNode
Without LoopNode, exit early from loop unswitching and partial peeling

Reviewed-by: kvn, never, sgoldman
2008-04-09 09:25:45 -07:00
Chuck Rasbold
bfbfdfa428 6663908: NegativeArraySizeException is not thrown
Don't optimize zero length array allocations at compile time.

Reviewed-by: kvn, never
2008-04-07 15:15:16 -07:00
Tom Rodriguez
3093e354db 6646020: assert(in_bb(n),"must be in block") in -Xcomp mode
Reviewed-by: kvn, rasbold
2008-04-03 21:26:03 -07:00
Chuck Rasbold
1659f11da6 Merge 2008-04-03 06:41:16 -07:00
Vladimir Kozlov
ccaa58c5db 6681577: PIT: some VM tests fails with -XX:+AggressiveOpts in 6u5p b01
C2 spends > 60% in escape analysis code during test nsk/regression/b4675027.

Reviewed-by: never
2008-04-02 16:59:37 -07:00
John R Rose
0d27a8639f 6667042: PrintAssembly option does not work without special plugin
Remove old private plugin interface, simplify, rework old plugin to use unchanged Gnu sources

Reviewed-by: kvn, rasbold
2008-04-02 12:09:59 -07:00
Vladimir Kozlov
833746644c 6682236: C2 hits ideal nodes limit during IGVN optimization with EA
Missing check in LoadNode::Ideal() causes infinite generation of a value Phi.

Reviewed-by: jrose, never
2008-03-31 18:37:36 -07:00
Tom Rodriguez
0530e0d854 6680594: Load + Load isn't canonicalized leading to missed GVN opportunities
Reviewed-by: kvn, jrose
2008-03-28 09:00:39 -07:00
Vladimir Kozlov
fb63e29743 6679854: assert in escape.cpp:397
The assert misses the case CastX2P 'base' for an unsafe field reference

Reviewed-by: never, jrose
2008-03-27 09:12:54 -07:00
Vladimir Kozlov
cdd27962da 6674600: (Escape Analysis) Optimize memory graph for instance's fields
EA gives opportunite to do more aggressive memory optimizations.

Reviewed-by: never, jrose
2008-03-20 15:11:44 -07:00
Vladimir Kozlov
1ba2523386 6259129: (Escape Analysis) scalar replacement for not escaping objects
Use scalar replacement with EA to remove allocations for objects which do not escape the compiled method.

Reviewed-by: rasbold, never, jrose
2008-03-20 13:51:55 -07:00
Tom Rodriguez
a2b4f55757 6663621: JVM crashes while trying to execute api/java_security/Signature/SignatureTests.html#initSign tests
Alignment expression with secondary induction variables is sometimes wrong

Reviewed-by: kvn, rasbold
2008-03-20 10:43:42 -07:00
Tom Rodriguez
d200260fe5 6661247: Internal bug in 32-bit HotSpot optimizer while bit manipulations
Copy elimination of a constant value results in incorrect execution

Reviewed-by: kvn, sgoldman, rasbold
2008-03-19 15:14:36 -07:00
Tom Rodriguez
49434b6bad 6659207: access violation in CompilerThread0
Split_thru_phi produces top on a non-dead path

Reviewed-by: kvn, rasbold, sgoldman
2008-03-18 23:54:17 -07:00
Tom Rodriguez
8e1624d88c 6676841: ClearArrayNode::Identity is incorrect for 64-bit
ClearArrayNode::Identity should use TypeX instead of TypeInt

Reviewed-by: jrose, kvn, sgoldman
2008-03-18 23:44:46 -07:00
Tom Rodriguez
641bce6847 6666343: Compile::has_loops not always set correctly
Compile::has_loops() should be set from inlined methods

Reviewed-by: kvn, rasbold
2008-03-18 11:17:37 -07:00
Vladimir Kozlov
20046c1a18 6672848: (Escape Analysis) improve lock elimination with EA
Remove lock/unlock MemBar nodes and specify locks in debug info for deoptimization.

Reviewed-by: never
2008-03-14 16:40:42 -07:00
Vladimir Kozlov
fc0117cb9a 6674588: (Escape Analysis) Improve Escape Analysis code
Current EA code has several problems which have to be fixed.

Reviewed-by: jrose, sgoldman
2008-03-14 15:26:33 -07:00
Vladimir Kozlov
30dc0edfc8 6673473: (Escape Analysis) Add the instance's field information to PhiNode
Avoid an infinite generation of instance's field values Phi nodes.

Reviewed-by: never
2008-03-13 16:31:32 -07:00
Vladimir Kozlov
000ac830a0 6671807: (Escape Analysis) Add new ideal node to represent the state of a scalarized object at a safepoint
Values of non-static fields of a scalarized object should be saved in debug info to reallocate the object during deoptimization.

Reviewed-by: never
2008-03-13 16:06:34 -07:00
Vladimir Kozlov
50708126d4 6623167: C2 crashed in StoreCMNode::Value
C2 crashed in StoreCMNode::Value because n->in(MemNode::OopStore) is 0.

Reviewed-by: rasbold, never
2008-03-11 11:04:40 -07:00
Vladimir Kozlov
9ec574b7e6 6667605: (Escape Analysis) inline java constructors when EA is on
Java constructors should be inlined to be able scalar replace a new object

Reviewed-by: rasbold
2008-03-07 11:09:13 -08:00
Vladimir Kozlov
37b9a97e08 6670459: Fix Node::dump() performance
Dump full ideal graph takes forever.

Reviewed-by: never, rasbold
2008-03-06 20:58:16 -08:00
Vladimir Kozlov
277c3322f6 6667612: (Escape Analysis) disable loop cloning if it has a scalar replaceable allocation
Cloning an allocation will not allow scalar replacement since memory operations could not be associated with one allocation.

Reviewed-by: rasbold
2008-03-06 10:53:33 -08:00
Vladimir Kozlov
bf7f5e1887 6667610: (Escape Analysis) retry compilation without EA if it fails
During split unique types EA could exceed nodes limit and fail the method compilation.

Reviewed-by: rasbold
2008-03-06 10:30:17 -08:00
Vladimir Kozlov
17458c9660 6671250: In Parse::do_if() old Cmp node 'c' should be replaced with new one after BoolNode transformation
In Parse::do_if() 'c' (CmpNode) node may be changed during BoolNode transformation so 'c' may became dead but the node is referenced later in the code.

Reviewed-by: never
2008-03-05 11:33:31 -08:00
Vladimir Kozlov
dc6ad19d70 6667618: disable LoadL->ConvL2I ==> LoadI optimization
This optimization causes problems (sizes of Load and Store nodes do not match) for objects initialization code and Escape Analysis

Reviewed-by: jrose, never
2008-02-29 19:57:41 -08:00
Vladimir Kozlov
09d7f4bbcf 6667588: Don't generate duplicated CMP for float/double values
Float CMove generation add duplicated CMPF if there are more then one Move depending on the condition.

Reviewed-by: jrose, never, rasbold
2008-02-29 19:07:15 -08:00
Vladimir Kozlov
7ec44373b5 6667581: Don't generate initialization (by 0) code for arrays with size 0
Generate_arraycopy() does not check the size of allocated array.

Reviewed-by: jrose, never
2008-02-29 11:22:27 -08:00
Vladimir Kozlov
c223fed084 6667580: Optimize CmpP for allocations
CmpP could be optimized out if it compares new allocated objects.

Reviewed-by: jrose, never, rasbold
2008-02-29 09:57:18 -08:00
Vladimir Kozlov
9a4ccf8a06 6667573: Use set_req_X() in AddPNode::Ideal() for Iterative GVN
Set_req_X() puts dependent nodes on IGVN worklist which allows to improve graph and gives more opportunities for EA scalar replacement.

Reviewed-by: jrose, never
2008-02-28 15:40:09 -08:00
Vladimir Kozlov
7be6246821 6590177: jck60019 test assert(!repeated,"do not walk merges twice")
A mergemem node could be not in worklist_store but in should_not_repeat vectorset since it was processed and removed from worklist_store before.

Reviewed-by: jrose, never
2008-02-28 10:45:15 -08:00
Vladimir Kozlov
9f1a8ede80 6633953: type2aelembytes{T_ADDRESS} should be 8 bytes in 64 bit VM
T_ADDRESS size is defined as 'int' size (4 bytes) but C2 use it for raw pointers and as memory type for StoreP and LoadP nodes.

Reviewed-by: jrose
2008-02-25 15:05:44 -08:00
Vladimir Kozlov
0dd8f3e8c0 6650373: Assert in methodOopDesc::make_adapters()
AdapterHandlerLibrary::get_create_adapter_index() returns incorrect value (-2) when CodeCache is full.

Reviewed-by: sgoldman
2008-02-22 17:55:13 -08:00
Vladimir Kozlov
5ade869e8c 6614330: Node::dump(n) does not print full graph for specified depth
A node is not processed in dump_nodes() if it was visited during processing previous inputs.

Reviewed-by: rasbold
2008-02-20 16:19:43 -08:00
Vladimir Kozlov
90815abd51 6621098: "* HeapWordSize" for TrackedInitializationLimit is missing
'* HeapWordSize' is missing in GraphKit::set_output_for_allocation()

Reviewed-by: rasbold, jrose, never
2008-02-12 18:37:50 -08:00
Tom Rodriguez
10c473e425 6395208: Elide autoboxing for calls to HashMap.get(int) and HashMap.get(long)
Reviewed-by: kvn, rasbold
2007-12-05 09:01:00 -08:00
J. Duke
8153779ad3 Initial load 2007-12-01 00:00:00 +00:00