Top

PhaseRemoveUseless クラス, PhaseTransform クラスとそのサブクラス, 及びそれらの補助クラス (NodeHash, Type_Array, PhaseRemoveUseless, PhaseTransform, PhaseValues, PhaseGVN, PhaseIterGVN, PhaseCCP, PhasePeephole)

これらは, C2 JIT Compiler 内の処理フェーズを表すクラス. より具体的に言うと, コードに対する種々の最適化処理を表すクラス.

クラス一覧(class list)


PhaseRemoveUseless

概要(Summary)

Phase クラスの具象サブクラスの1つ.

無用命令の削除(dead code elimination)を行う.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseRemoveUseless-----------------------------
    // Remove useless nodes from GVN hash-table, worklist, and graph
    class PhaseRemoveUseless : public Phase {

使われ方(Usage)

Compile::Compile( ciEnv* ci_env, C2Compiler* compiler, ciMethod* target, int osr_bci, bool subsume_loads, bool do_escape_analysis ) 内で(のみ)使用されている.

詳細(Details)

See: here for details


PhaseTransform

概要(Summary)

Phase クラスのサブクラスの1つ. コードを解析し新しい形に変形する Phase クラスの基底クラス.

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseTransform---------------------------------
    // Phases that analyze, then transform.  Constructing the Phase object does any
    // global or slow analysis.  The results are cached later for a fast
    // transformation pass.  When the Phase object is deleted the cached analysis
    // results are deleted.
    class PhaseTransform : public Phase {

使われ方(Usage)

使用する際には, transform() メソッドをオーバーライドしたサブクラスを作ればいい.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
      // Return a node which computes the same function as this node, but
      // in a faster or cheaper fashion.
      virtual Node *transform( Node *n ) = 0;

詳細(Details)

See: here for details


PhaseValues

概要(Summary)

PhaseTransform クラスのサブクラスの1つ.

Value Numbering を行う.

なお, このクラス自体は abstract class であり, 実際に使われるのはサブクラス.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseValues------------------------------------
    // Phase infrastructure to support values
    class PhaseValues : public PhaseTransform {

詳細(Details)

See: here for details


PhaseGVN

概要(Summary)

PhaseValues クラスの具象サブクラス.

Global Value Numbering を行う.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseGVN---------------------------------------
    // Phase for performing local, pessimistic GVN-style optimizations.
    class PhaseGVN : public PhaseValues {

使われ方(Usage)

以下の箇所で(のみ)使用されている.

詳細(Details)

See: here for details


PhaseIterGVN

概要(Summary)

PhaseValues クラスのサブクラス.

Global Value Numbering を行う.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseIterGVN-----------------------------------
    // Phase for iteratively performing local, pessimistic GVN-style optimizations.
    // and ideal transformations on the graph.
    class PhaseIterGVN : public PhaseGVN {

使われ方(Usage)

以下の箇所で(のみ)使用されている.

詳細(Details)

See: here for details


PhaseCCP

概要(Summary)

PhaseIterGVN クラスのサブクラス.

定数伝播 (Conditional Constant Propagation) を行う.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhaseCCP---------------------------------------
    // Phase for performing global Conditional Constant Propagation.
    // Should be replaced with combined CCP & GVN someday.
    class PhaseCCP : public PhaseIterGVN {

使われ方(Usage)

Compile::Optimize() 内で(のみ)使用されている.

詳細(Details)

See: here for details


PhasePeephole

概要(Summary)

PhaseTransform クラスの具象サブクラスの1つ.

のぞき穴式最適化 (peephole optimization) を行う.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //------------------------------PhasePeephole----------------------------------
    // Phase for performing peephole optimizations on register allocated basic blocks.
    class PhasePeephole : public PhaseTransform {

使われ方(Usage)

Compile::Code_Gen() 内で(のみ)使用されている.

(ただし, OptoPeephole オプションが指定されている時にしか使用されない)

詳細(Details)

See: here for details


NodeHash

概要(Summary)

PhaseValues クラス内で使用される補助クラス(StackObjクラス).

Node をキーとし Node を値とするハッシュテーブル. Value Numbering 時に同じ値を持つ Node を探すために使用される.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //-----------------------------------------------------------------------------
    // Expandable closed hash-table of nodes, initialized to NULL.
    // Note that the constructor just zeros things
    // Storage is reclaimed when the Arena's lifetime is over.
    class NodeHash : public StackObj {

使われ方(Usage)

インスタンスの格納場所(where its instances are stored)

各 PhaseValues オブジェクトの _table フィールドに(のみ)格納されている.

生成箇所(where its instances are created)

(PhaseValues クラスの _table フィールドは, ポインタ型ではなく実体なので, PhaseValues オブジェクトの生成時に一緒に生成される)

詳細(Details)

See: here for details


Type_Array

概要(Summary)

PhaseTransform クラス内で使用される補助クラス(StackObjクラス).

Type クラス用のユーティリティ・クラス. Type オブジェクトの配列を表す (= 整数値から Type オブジェクトへの写像). なお配列長は必要に応じて自動的に拡張される.

    ((cite: hotspot/src/share/vm/opto/phaseX.hpp))
    //-----------------------------------------------------------------------------
    // Map dense integer indices to Types.  Uses classic doubling-array trick.
    // Abstractly provides an infinite array of Type*'s, initialized to NULL.
    // Note that the constructor just zeros things, and since I use Arena
    // allocation I do not need a destructor to reclaim storage.
    // Despite the general name, this class is customized for use by PhaseTransform.
    class Type_Array : public StackObj {

使われ方(Usage)

インスタンスの格納場所(where its instances are stored)

各 PhaseTransform オブジェクトの _types フィールドに(のみ)格納されている.

生成箇所(where its instances are created)

(PhaseTransform クラスの _types フィールドは, ポインタ型ではなく実体なので, PhaseTransform オブジェクトの生成時に一緒に生成される)

詳細(Details)

See: here for details



This document is available under the GNU GENERAL PUBLIC LICENSE Version 2.