Print this page
rev 1025 : imported patch indy.compiler.patch
rev 1026 : imported patch indy.compiler.inline.patch

Split Close
Expand all
Collapse all
          --- old/src/share/vm/ci/ciObject.hpp
          +++ new/src/share/vm/ci/ciObject.hpp
↓ open down ↓ 123 lines elided ↑ open up ↑
 124  124    // generated code to represent this oop.  This address
 125  125    // is not the true address of the oop -- it will get patched
 126  126    // during nmethod creation.
 127  127    //
 128  128    // Usage note: no address arithmetic allowed.  Oop must
 129  129    // be registered with the oopRecorder.
 130  130    jobject constant_encoding();
 131  131  
 132  132    // What kind of ciObject is this?
 133  133    virtual bool is_null_object() const       { return false; }
      134 +  virtual bool is_call_site() const         { return false; }
 134  135    virtual bool is_cpcache() const           { return false; }
 135  136    virtual bool is_instance()                { return false; }
 136  137    virtual bool is_method()                  { return false; }
 137  138    virtual bool is_method_data()             { return false; }
      139 +  virtual bool is_method_handle() const     { return false; }
 138  140    virtual bool is_array()                   { return false; }
 139  141    virtual bool is_obj_array()               { return false; }
 140  142    virtual bool is_type_array()              { return false; }
 141  143    virtual bool is_symbol()                  { return false; }
 142  144    virtual bool is_type()                    { return false; }
 143  145    virtual bool is_return_address()          { return false; }
 144  146    virtual bool is_klass()                   { return false; }
 145  147    virtual bool is_instance_klass()          { return false; }
 146  148    virtual bool is_method_klass()            { return false; }
 147  149    virtual bool is_array_klass()             { return false; }
↓ open down ↓ 31 lines elided ↑ open up ↑
 179  181    // considered loaded, and primitive types are considered loaded.
 180  182    bool is_loaded() const {
 181  183      return handle() != NULL || is_classless();
 182  184    }
 183  185  
 184  186    // Subclass casting with assertions.
 185  187    ciNullObject*            as_null_object() {
 186  188      assert(is_null_object(), "bad cast");
 187  189      return (ciNullObject*)this;
 188  190    }
      191 +  ciCallSite*              as_call_site() {
      192 +    assert(is_call_site(), "bad cast");
      193 +    return (ciCallSite*) this;
      194 +  }
 189  195    ciCPCache*               as_cpcache() {
 190  196      assert(is_cpcache(), "bad cast");
 191  197      return (ciCPCache*) this;
 192  198    }
 193  199    ciInstance*              as_instance() {
 194  200      assert(is_instance(), "bad cast");
 195  201      return (ciInstance*)this;
 196  202    }
 197  203    ciMethod*                as_method() {
 198  204      assert(is_method(), "bad cast");
 199  205      return (ciMethod*)this;
 200  206    }
 201  207    ciMethodData*            as_method_data() {
 202  208      assert(is_method_data(), "bad cast");
 203  209      return (ciMethodData*)this;
 204  210    }
      211 +  ciMethodHandle*          as_method_handle() {
      212 +    assert(is_method_handle(), "bad cast");
      213 +    return (ciMethodHandle*) this;
      214 +  }
 205  215    ciArray*                 as_array() {
 206  216      assert(is_array(), "bad cast");
 207  217      return (ciArray*)this;
 208  218    }
 209  219    ciObjArray*              as_obj_array() {
 210  220      assert(is_obj_array(), "bad cast");
 211  221      return (ciObjArray*)this;
 212  222    }
 213  223    ciTypeArray*             as_type_array() {
 214  224      assert(is_type_array(), "bad cast");
↓ open down ↓ 69 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX