提交 3f11548d 编写于 作者: K kvn

Merge

/* /*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -406,10 +406,10 @@ ...@@ -406,10 +406,10 @@
develop(intx, WarmCallMaxSize, 999999, \ develop(intx, WarmCallMaxSize, 999999, \
"size of the largest inlinable method") \ "size of the largest inlinable method") \
\ \
product(intx, MaxNodeLimit, 65000, \ product(intx, MaxNodeLimit, 80000, \
"Maximum number of nodes") \ "Maximum number of nodes") \
\ \
product(intx, NodeLimitFudgeFactor, 1000, \ product(intx, NodeLimitFudgeFactor, 2000, \
"Fudge Factor for certain optimizations") \ "Fudge Factor for certain optimizations") \
\ \
product(bool, UseJumpTables, true, \ product(bool, UseJumpTables, true, \
......
/* /*
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -435,6 +435,9 @@ void PhaseChaitin::Register_Allocate() { ...@@ -435,6 +435,9 @@ void PhaseChaitin::Register_Allocate() {
// Insert un-coalesced copies. Visit all Phis. Where inputs to a Phi do // Insert un-coalesced copies. Visit all Phis. Where inputs to a Phi do
// not match the Phi itself, insert a copy. // not match the Phi itself, insert a copy.
coalesce.insert_copies(_matcher); coalesce.insert_copies(_matcher);
if (C->failing()) {
return;
}
} }
// After aggressive coalesce, attempt a first cut at coloring. // After aggressive coalesce, attempt a first cut at coloring.
......
/* /*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -240,6 +240,8 @@ void PhaseAggressiveCoalesce::insert_copies( Matcher &matcher ) { ...@@ -240,6 +240,8 @@ void PhaseAggressiveCoalesce::insert_copies( Matcher &matcher ) {
_unique = C->unique(); _unique = C->unique();
for( uint i=0; i<_phc._cfg._num_blocks; i++ ) { for( uint i=0; i<_phc._cfg._num_blocks; i++ ) {
C->check_node_count(NodeLimitFudgeFactor, "out of nodes in coalesce");
if (C->failing()) return;
Block *b = _phc._cfg._blocks[i]; Block *b = _phc._cfg._blocks[i];
uint cnt = b->num_preds(); // Number of inputs to the Phi uint cnt = b->num_preds(); // Number of inputs to the Phi
......
/* /*
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -985,6 +985,8 @@ Node *Matcher::xform( Node *n, int max_stack ) { ...@@ -985,6 +985,8 @@ Node *Matcher::xform( Node *n, int max_stack ) {
mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root
while (mstack.is_nonempty()) { while (mstack.is_nonempty()) {
C->check_node_count(NodeLimitFudgeFactor, "too many nodes matching instructions");
if (C->failing()) return NULL;
n = mstack.node(); // Leave node on stack n = mstack.node(); // Leave node on stack
Node_State nstate = mstack.state(); Node_State nstate = mstack.state();
if (nstate == Visit) { if (nstate == Visit) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册