LRB midpath code quality

Roland Westrelin rwestrel at redhat.com
Wed Mar 6 08:44:17 UTC 2019


Maybe having 2 regions instead of a single wider one:

    enum { _heap_stable = 1, _heap_unstable, PATH_LIMIT };
    Node* region = new RegionNode(PATH_LIMIT);
    Node* val_phi = new PhiNode(region, uncasted_val->bottom_type()->is_oopptr());
    Node* raw_mem_phi = PhiNode::make(region, raw_mem, Type::MEMORY, TypeRawPtr::BOTTOM);

    enum { _not_cset = 1, _not_equal, _evac_path, _null_path, PATH_LIMIT2 };
    Node* region2 = new RegionNode(PATH_LIMIT2);
    Node* val_phi2 = new PhiNode(region2, uncasted_val->bottom_type()->is_oopptr());
    Node* raw_mem_phi2 = PhiNode::make(region2, raw_mem, Type::MEMORY, TypeRawPtr::BOTTOM);

confuses the register allocator. That could be something to try.

Roland.


More information about the shenandoah-dev mailing list