Mercurial > hg > truffle
comparison src/share/vm/c1/c1_ValueType.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 | 1d7922586cf6 |
children | 8a02ca5e5576 |
comparison
equal
deleted
inserted
replaced
6724:36d1d483d5d6 | 6725:da91efe96a93 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
83 Unimplemented(); | 83 Unimplemented(); |
84 return NULL; | 84 return NULL; |
85 } | 85 } |
86 | 86 |
87 | 87 |
88 | |
89 jobject ObjectType::encoding() const { | |
90 assert(is_constant(), "must be"); | |
91 return constant_value()->constant_encoding(); | |
92 } | |
93 | |
94 bool ObjectType::is_loaded() const { | |
95 assert(is_constant(), "must be"); | |
96 return constant_value()->is_loaded(); | |
97 } | |
98 | |
99 ciObject* ObjectConstant::constant_value() const { return _value; } | |
100 ciObject* ArrayConstant::constant_value() const { return _value; } | |
101 ciObject* InstanceConstant::constant_value() const { return _value; } | |
102 ciObject* ClassConstant::constant_value() const { return _value; } | |
103 | |
104 ciType* ObjectConstant::exact_type() const { | 88 ciType* ObjectConstant::exact_type() const { |
105 ciObject* c = constant_value(); | 89 ciObject* c = constant_value(); |
106 return (c != NULL && !c->is_null_object()) ? c->klass() : NULL; | 90 return (c != NULL && !c->is_null_object()) ? c->klass() : NULL; |
107 } | 91 } |
108 ciType* ArrayConstant::exact_type() const { | 92 ciType* ArrayConstant::exact_type() const { |
112 ciType* InstanceConstant::exact_type() const { | 96 ciType* InstanceConstant::exact_type() const { |
113 ciObject* c = constant_value(); | 97 ciObject* c = constant_value(); |
114 return (c != NULL && !c->is_null_object()) ? c->klass() : NULL; | 98 return (c != NULL && !c->is_null_object()) ? c->klass() : NULL; |
115 } | 99 } |
116 ciType* ClassConstant::exact_type() const { | 100 ciType* ClassConstant::exact_type() const { |
117 ciObject* c = constant_value(); | 101 return Compilation::current()->env()->Class_klass(); |
118 return (c != NULL && !c->is_null_object()) ? c->klass() : NULL; | |
119 } | 102 } |
120 | 103 |
104 | |
105 jobject ObjectType::encoding() const { | |
106 assert(is_constant(), "must be"); | |
107 return constant_value()->constant_encoding(); | |
108 } | |
109 | |
110 bool ObjectType::is_loaded() const { | |
111 assert(is_constant(), "must be"); | |
112 return constant_value()->is_loaded(); | |
113 } | |
114 | |
115 bool MetadataType::is_loaded() const { | |
116 assert(is_constant(), "must be"); | |
117 return constant_value()->is_loaded(); | |
118 } | |
119 | |
120 ciObject* ObjectConstant::constant_value() const { return _value; } | |
121 ciObject* ArrayConstant::constant_value() const { return _value; } | |
122 ciObject* InstanceConstant::constant_value() const { return _value; } | |
121 | 123 |
122 ValueType* as_ValueType(BasicType type) { | 124 ValueType* as_ValueType(BasicType type) { |
123 switch (type) { | 125 switch (type) { |
124 case T_VOID : return voidType; | 126 case T_VOID : return voidType; |
125 case T_BYTE : // fall through | 127 case T_BYTE : // fall through |