src/share/vm/ci/ciObjArrayKlass.cpp

changeset 4037
da91efe96a93
parent 2982
ddd894528dbc
child 4142
d8ce2825b193
     1.1 --- a/src/share/vm/ci/ciObjArrayKlass.cpp	Fri Aug 31 16:39:35 2012 -0700
     1.2 +++ b/src/share/vm/ci/ciObjArrayKlass.cpp	Sat Sep 01 13:25:18 2012 -0400
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -25,14 +25,13 @@
    1.11  #include "precompiled.hpp"
    1.12  #include "ci/ciInstanceKlass.hpp"
    1.13  #include "ci/ciObjArrayKlass.hpp"
    1.14 -#include "ci/ciObjArrayKlassKlass.hpp"
    1.15  #include "ci/ciSymbol.hpp"
    1.16  #include "ci/ciUtilities.hpp"
    1.17  #include "oops/objArrayKlass.hpp"
    1.18  
    1.19  // ciObjArrayKlass
    1.20  //
    1.21 -// This class represents a klassOop in the HotSpot virtual machine
    1.22 +// This class represents a Klass* in the HotSpot virtual machine
    1.23  // whose Klass part is an objArrayKlass.
    1.24  
    1.25  // ------------------------------------------------------------------
    1.26 @@ -41,8 +40,8 @@
    1.27  // Constructor for loaded object array klasses.
    1.28  ciObjArrayKlass::ciObjArrayKlass(KlassHandle h_k) : ciArrayKlass(h_k) {
    1.29    assert(get_Klass()->oop_is_objArray(), "wrong type");
    1.30 -  klassOop element_klassOop = get_objArrayKlass()->bottom_klass();
    1.31 -  _base_element_klass = CURRENT_ENV->get_object(element_klassOop)->as_klass();
    1.32 +  Klass* element_Klass = get_objArrayKlass()->bottom_klass();
    1.33 +  _base_element_klass = CURRENT_ENV->get_klass(element_Klass);
    1.34    assert(_base_element_klass->is_instance_klass() ||
    1.35           _base_element_klass->is_type_array_klass(), "bad base klass");
    1.36    if (dimension() == 1) {
    1.37 @@ -63,8 +62,7 @@
    1.38                                   ciKlass* base_element_klass,
    1.39                                   int dimension)
    1.40    : ciArrayKlass(array_name,
    1.41 -                 dimension,
    1.42 -                 ciObjArrayKlassKlass::make()) {
    1.43 +                 dimension, T_OBJECT) {
    1.44      _base_element_klass = base_element_klass;
    1.45      assert(_base_element_klass->is_instance_klass() ||
    1.46             _base_element_klass->is_type_array_klass(), "bad base klass");
    1.47 @@ -85,8 +83,8 @@
    1.48      // Produce the element klass.
    1.49      if (is_loaded()) {
    1.50        VM_ENTRY_MARK;
    1.51 -      klassOop element_klassOop = get_objArrayKlass()->element_klass();
    1.52 -      _element_klass = CURRENT_THREAD_ENV->get_object(element_klassOop)->as_klass();
    1.53 +      Klass* element_Klass = get_objArrayKlass()->element_klass();
    1.54 +      _element_klass = CURRENT_THREAD_ENV->get_klass(element_Klass);
    1.55      } else {
    1.56        VM_ENTRY_MARK;
    1.57        // We are an unloaded array klass.  Attempt to fetch our
    1.58 @@ -154,13 +152,13 @@
    1.59    if (element_klass->is_loaded()) {
    1.60      EXCEPTION_CONTEXT;
    1.61      // The element klass is loaded
    1.62 -    klassOop array = element_klass->get_Klass()->array_klass(THREAD);
    1.63 +    Klass* array = element_klass->get_Klass()->array_klass(THREAD);
    1.64      if (HAS_PENDING_EXCEPTION) {
    1.65        CLEAR_PENDING_EXCEPTION;
    1.66        CURRENT_THREAD_ENV->record_out_of_memory_failure();
    1.67        return ciEnv::unloaded_ciobjarrayklass();
    1.68      }
    1.69 -    return CURRENT_THREAD_ENV->get_object(array)->as_obj_array_klass();
    1.70 +    return CURRENT_THREAD_ENV->get_obj_array_klass(array);
    1.71    }
    1.72  
    1.73    // The array klass was unable to be made or the element klass was
    1.74 @@ -179,6 +177,5 @@
    1.75  //
    1.76  // Make an array klass corresponding to the specified primitive type.
    1.77  ciObjArrayKlass* ciObjArrayKlass::make(ciKlass* element_klass) {
    1.78 -  assert(element_klass->is_java_klass(), "wrong kind of klass");
    1.79    GUARDED_VM_ENTRY(return make_impl(element_klass);)
    1.80  }

mercurial