Mercurial > hg > truffle
diff src/share/vm/ci/ciType.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | f95d63e2154a |
children | 070d523b96a7 |
line wrap: on
line diff
--- a/src/share/vm/ci/ciType.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/share/vm/ci/ciType.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2000, 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 @@ -23,6 +23,7 @@ */ #include "precompiled.hpp" +#include "ci/ciEnv.hpp" #include "ci/ciType.hpp" #include "ci/ciUtilities.hpp" #include "classfile/systemDictionary.hpp" @@ -38,20 +39,15 @@ // ------------------------------------------------------------------ // ciType::ciType // -ciType::ciType(BasicType basic_type) : ciObject() { +ciType::ciType(BasicType basic_type) : ciMetadata() { assert(basic_type >= T_BOOLEAN && basic_type <= T_CONFLICT, "range check"); - assert(basic_type != T_OBJECT && basic_type != T_ARRAY, "not a reference type"); _basic_type = basic_type; } -ciType::ciType(KlassHandle k) : ciObject(k) { +ciType::ciType(KlassHandle k) : ciMetadata(k()) { _basic_type = Klass::cast(k())->oop_is_array() ? T_ARRAY : T_OBJECT; } -ciType::ciType(ciKlass* klass) : ciObject(klass) { - _basic_type = klass->is_array_klass_klass() ? T_ARRAY : T_OBJECT; -} - // ------------------------------------------------------------------ // ciType::is_subtype_of @@ -87,7 +83,7 @@ // ciInstance* ciType::java_mirror() { VM_ENTRY_MARK; - return CURRENT_THREAD_ENV->get_object(Universe::java_mirror(basic_type()))->as_instance(); + return CURRENT_THREAD_ENV->get_instance(Universe::java_mirror(basic_type())); } // ------------------------------------------------------------------ @@ -100,7 +96,7 @@ if (basic_type() == T_VOID) return NULL; VM_ENTRY_MARK; - return CURRENT_THREAD_ENV->get_object(SystemDictionary::box_klass(basic_type()))->as_instance_klass(); + return CURRENT_THREAD_ENV->get_instance_klass(SystemDictionary::box_klass(basic_type())); }