Mercurial > hg > truffle
comparison src/share/vm/opto/matcher.cpp @ 10999:693e4d04fd09
8014959: assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
Summary: Insert extra checks and bailouts for too many nodes
Reviewed-by: kvn
author | drchase |
---|---|
date | Tue, 11 Jun 2013 16:34:34 -0400 |
parents | 603ca7e51354 |
children | ac91879aa56f |
comparison
equal
deleted
inserted
replaced
10997:46c544b8fbfc | 10999:693e4d04fd09 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1997, 2013, 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. |
983 // Use one stack to keep both: child's node/state and parent's node/index | 983 // Use one stack to keep both: child's node/state and parent's node/index |
984 MStack mstack(max_stack * 2 * 2); // C->unique() * 2 * 2 | 984 MStack mstack(max_stack * 2 * 2); // C->unique() * 2 * 2 |
985 mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root | 985 mstack.push(n, Visit, NULL, -1); // set NULL as parent to indicate root |
986 | 986 |
987 while (mstack.is_nonempty()) { | 987 while (mstack.is_nonempty()) { |
988 C->check_node_count(NodeLimitFudgeFactor, "too many nodes matching instructions"); | |
989 if (C->failing()) return NULL; | |
988 n = mstack.node(); // Leave node on stack | 990 n = mstack.node(); // Leave node on stack |
989 Node_State nstate = mstack.state(); | 991 Node_State nstate = mstack.state(); |
990 if (nstate == Visit) { | 992 if (nstate == Visit) { |
991 mstack.set_state(Post_Visit); | 993 mstack.set_state(Post_Visit); |
992 Node *oldn = n; | 994 Node *oldn = n; |