Top

LoaderConstraint クラス関連のクラス (LoaderConstraintTable, LoaderConstraintEntry)

これらは, ロードしたクラスの情報を管理するためのクラス. より具体的に言うと, Java 仮想マシン仕様の「ロード制約(loading constraints)」を管理するためのクラス (See: here and here for details).

なお, これらは SystemDictionary クラス内で(のみ)使用される補助クラス.

概要(Summary)

ロード制約は, 同名のクラスが異なるクラスローダによってロードされると型安全性が壊れるため, それをチェックするためのもの. ロード制約に違反するようなクラスロードが起こると LinkageError が送出される.

JVMS の「5.3.4 Loading Constraints」を参照.

また, アルゴリズムの詳細は 以下の論文 ("Dynamic class loading in the Java virtual machine") を参照, とのこと.

    Sheng Liang, Gilad Bracha, 
    "Dynamic class loading in the Java virtual machine", 
    In Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications (OOPSLA '98), pages 33-44, 
    ((cite: hotspot/src/share/vm/classfile/systemDictionary.cpp))
    // Constraints on class loaders. The details of the algorithm can be
    // found in the OOPSLA'98 paper "Dynamic Class Loading in the Java
    // Virtual Machine" by Sheng Liang and Gilad Bracha.  The basic idea is
    // that the system dictionary needs to maintain a set of contraints that
    // must be satisfied by all classes in the dictionary.
    // if defining is true, then LinkageError if already in systemDictionary
    // if initiating loader, then ok if instanceKlass matches existing entry

    void SystemDictionary::check_constraints(int d_index, unsigned int d_hash,

クラス一覧(class list)


LoaderConstraintTable

概要(Summary)

SystemDictionary クラス内で使用される補助クラス (See: SystemDictionary).

SystemDictionary が管理するロード制約情報を入れておくハッシュテーブル.

    ((cite: hotspot/src/share/vm/classfile/loaderConstraints.hpp))
    class LoaderConstraintTable : public Hashtable<klassOop> {

使われ方(Usage)

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

SystemDictionary クラスの _loader_constraints フィールド (static フィールド) に(のみ)格納されている.

    ((cite: hotspot/src/share/vm/classfile/systemDictionary.hpp))
      // Constraints on class loaders
      static LoaderConstraintTable*  _loader_constraints;

使用箇所(where its instances are used)

詳細(Details)

See: here for details


LoaderConstraintEntry

概要(Summary)

LoaderConstraintTable クラス内で使用される補助クラス.

LoaderConstraintTable オブジェクト内に格納されるハッシュテーブル・エントリ.

    ((cite: hotspot/src/share/vm/classfile/loaderConstraints.hpp))
    class LoaderConstraintEntry : public HashtableEntry<klassOop> {

詳細(Details)

See: here for details



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