< prev index next >

src/hotspot/share/classfile/classLoader.hpp

Print this page




  31 #include "utilities/exceptions.hpp"
  32 #include "utilities/macros.hpp"
  33 
  34 // The VM class loader.
  35 #include <sys/stat.h>
  36 
  37 // Name of boot "modules" image
  38 #define  MODULES_IMAGE_NAME "modules"
  39 
  40 // Class path entry (directory or zip file)
  41 
  42 class JImageFile;
  43 class ClassFileStream;
  44 class PackageEntry;
  45 
  46 class ClassPathEntry : public CHeapObj<mtClass> {
  47 private:
  48   ClassPathEntry* volatile _next;
  49 public:
  50   // Next entry in class path
  51   ClassPathEntry* next() const {
  52     return (ClassPathEntry*) OrderAccess::load_ptr_acquire(&_next);
  53   }
  54   virtual ~ClassPathEntry() {}
  55   void set_next(ClassPathEntry* next) {
  56     // may have unlocked readers, so ensure visibility.
  57     OrderAccess::release_store_ptr(&_next, next);
  58   }
  59   virtual bool is_jrt() = 0;
  60   virtual bool is_jar_file() const = 0;
  61   virtual const char* name() const = 0;
  62   virtual JImageFile* jimage() const = 0;
  63   // Constructor
  64   ClassPathEntry() : _next(NULL) {}
  65   // Attempt to locate file_name through this class path entry.
  66   // Returns a class file parsing stream if successfull.
  67   virtual ClassFileStream* open_stream(const char* name, TRAPS) = 0;
  68   // Debugging
  69   NOT_PRODUCT(virtual void compile_the_world(Handle loader, TRAPS) = 0;)
  70 };
  71 
  72 class ClassPathDirEntry: public ClassPathEntry {
  73  private:
  74   const char* _dir;           // Name of directory
  75  public:
  76   bool is_jrt()            { return false; }
  77   bool is_jar_file() const { return false;  }




  31 #include "utilities/exceptions.hpp"
  32 #include "utilities/macros.hpp"
  33 
  34 // The VM class loader.
  35 #include <sys/stat.h>
  36 
  37 // Name of boot "modules" image
  38 #define  MODULES_IMAGE_NAME "modules"
  39 
  40 // Class path entry (directory or zip file)
  41 
  42 class JImageFile;
  43 class ClassFileStream;
  44 class PackageEntry;
  45 
  46 class ClassPathEntry : public CHeapObj<mtClass> {
  47 private:
  48   ClassPathEntry* volatile _next;
  49 public:
  50   // Next entry in class path
  51   ClassPathEntry* next() const { return OrderAccess::load_acquire(&_next); }


  52   virtual ~ClassPathEntry() {}
  53   void set_next(ClassPathEntry* next) {
  54     // may have unlocked readers, so ensure visibility.
  55     OrderAccess::release_store(&_next, next);
  56   }
  57   virtual bool is_jrt() = 0;
  58   virtual bool is_jar_file() const = 0;
  59   virtual const char* name() const = 0;
  60   virtual JImageFile* jimage() const = 0;
  61   // Constructor
  62   ClassPathEntry() : _next(NULL) {}
  63   // Attempt to locate file_name through this class path entry.
  64   // Returns a class file parsing stream if successfull.
  65   virtual ClassFileStream* open_stream(const char* name, TRAPS) = 0;
  66   // Debugging
  67   NOT_PRODUCT(virtual void compile_the_world(Handle loader, TRAPS) = 0;)
  68 };
  69 
  70 class ClassPathDirEntry: public ClassPathEntry {
  71  private:
  72   const char* _dir;           // Name of directory
  73  public:
  74   bool is_jrt()            { return false; }
  75   bool is_jar_file() const { return false;  }


< prev index next >