hotspot/src/share/vm/ci/ciKlass.hpp
changeset 13728 882756847a04
parent 7397 5b173b4ca846
child 13952 e3cf184080bc
--- a/hotspot/src/share/vm/ci/ciKlass.hpp	Fri Aug 31 16:39:35 2012 -0700
+++ b/hotspot/src/share/vm/ci/ciKlass.hpp	Sat Sep 01 13:25:18 2012 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -26,15 +26,14 @@
 #define SHARE_VM_CI_CIKLASS_HPP
 
 #include "ci/ciType.hpp"
-#include "oops/klassOop.hpp"
 
 // ciKlass
 //
-// This class and its subclasses represent klassOops in the
-// HotSpot virtual machine.  In the vm, each klassOop contains an
+// This class and its subclasses represent Klass*s in the
+// HotSpot virtual machine.  In the vm, each Klass* contains an
 // embedded Klass object.  ciKlass is subclassed to explicitly
-// represent the kind of Klass embedded in the klassOop.  For
-// example, a klassOop with an embedded objArrayKlass object is
+// represent the kind of Klass embedded in the Klass*.  For
+// example, a Klass* with an embedded objArrayKlass object is
 // represented in the ciObject hierarchy by the class
 // ciObjArrayKlass.
 class ciKlass : public ciType {
@@ -50,16 +49,14 @@
 
 protected:
   ciKlass(KlassHandle k_h, ciSymbol* name);
-  ciKlass(ciSymbol* name, ciKlass* klass);
+  ciKlass(ciSymbol* name, BasicType bt);
 
-  klassOop get_klassOop() const {
-    klassOop k = (klassOop)get_oop();
+  Klass* get_Klass() const {
+    Klass* k = (Klass*)_metadata;
     assert(k != NULL, "illegal use of unloaded klass");
     return k;
   }
 
-  Klass*   get_Klass() const { return get_klassOop()->klass_part(); }
-
   // Certain subklasses have an associated class loader.
   virtual oop loader()             { return NULL; }
   virtual jobject loader_handle()  { return NULL; }
@@ -88,6 +85,9 @@
   bool can_be_primary_super();
   static juint primary_super_limit() { return Klass::primary_super_limit(); }
 
+  // Is this ciObject the ciInstanceKlass representing java.lang.Object()?
+  virtual bool is_java_lang_Object() const  { return false; }
+
   // Get the shared parent of two klasses.
   ciKlass* least_common_ancestor(ciKlass* k);
 
@@ -119,7 +119,7 @@
   jint                   access_flags();
 
   // What kind of ciObject is this?
-  bool is_klass() { return true; }
+  bool is_klass() const { return true; }
 
   void print_name_on(outputStream* st);
 };