Reshuffle an if() condition to not depend on an uninitialized value.

Node::class_id_ contains garbage for newly allocated (FREE) nodes. This patch
changes the code to first test the node state_, then (for non-FREE nodes),
class_id_, and not the other way around.

This does not affect the branch taken (i.e. the current code is correct),
but makes Valgrind and MSan happy.

Review URL: https://codereview.chromium.org/11362158
Patch from Evgeniy Stepanov <eugenis@chromium.org>.

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@12903 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
mstarzinger@chromium.org 2012-11-08 14:40:55 +00:00
parent c203f05474
commit 36d128d7b8

View File

@ -633,7 +633,7 @@ void GlobalHandles::IterateAllRoots(ObjectVisitor* v) {
void GlobalHandles::IterateAllRootsWithClassIds(ObjectVisitor* v) {
for (NodeIterator it(this); !it.done(); it.Advance()) {
if (it.node()->has_wrapper_class_id() && it.node()->IsRetainer()) {
if (it.node()->IsRetainer() && it.node()->has_wrapper_class_id()) {
v->VisitEmbedderReference(it.node()->location(),
it.node()->wrapper_class_id());
}