Mercurial > hg > graal-jvmci-8
comparison src/share/vm/ci/ciInstanceKlass.cpp @ 24170:0b85ccd62409 jdk8u131-b01
8168699: Validate special case invocations
Reviewed-by: kevinw, vlivanov
author | coleenp |
---|---|
date | Tue, 13 Dec 2016 14:37:04 -0500 |
parents | 78bbf4d43a14 |
children | 719853999215 |
comparison
equal
deleted
inserted
replaced
24169:5ee58c7d3938 | 24170:0b85ccd62409 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 1999, 2016, 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. |
56 _has_subklass = ik->subklass() != NULL; | 56 _has_subklass = ik->subklass() != NULL; |
57 _init_state = ik->init_state(); | 57 _init_state = ik->init_state(); |
58 _nonstatic_field_size = ik->nonstatic_field_size(); | 58 _nonstatic_field_size = ik->nonstatic_field_size(); |
59 _has_nonstatic_fields = ik->has_nonstatic_fields(); | 59 _has_nonstatic_fields = ik->has_nonstatic_fields(); |
60 _has_default_methods = ik->has_default_methods(); | 60 _has_default_methods = ik->has_default_methods(); |
61 _is_anonymous = ik->is_anonymous(); | |
61 _nonstatic_fields = NULL; // initialized lazily by compute_nonstatic_fields: | 62 _nonstatic_fields = NULL; // initialized lazily by compute_nonstatic_fields: |
62 | 63 |
63 _implementor = NULL; // we will fill these lazily | 64 _implementor = NULL; // we will fill these lazily |
64 | 65 |
65 Thread *thread = Thread::current(); | 66 Thread *thread = Thread::current(); |
98 assert(name->byte_at(0) != '[', "not an instance klass"); | 99 assert(name->byte_at(0) != '[', "not an instance klass"); |
99 _init_state = (InstanceKlass::ClassState)0; | 100 _init_state = (InstanceKlass::ClassState)0; |
100 _nonstatic_field_size = -1; | 101 _nonstatic_field_size = -1; |
101 _has_nonstatic_fields = false; | 102 _has_nonstatic_fields = false; |
102 _nonstatic_fields = NULL; | 103 _nonstatic_fields = NULL; |
104 _is_anonymous = false; | |
103 _loader = loader; | 105 _loader = loader; |
104 _protection_domain = protection_domain; | 106 _protection_domain = protection_domain; |
105 _is_shared = false; | 107 _is_shared = false; |
106 _super = NULL; | 108 _super = NULL; |
107 _java_mirror = NULL; | 109 _java_mirror = NULL; |
587 if (!is_shared()) { | 589 if (!is_shared()) { |
588 _implementor = impl; | 590 _implementor = impl; |
589 } | 591 } |
590 } | 592 } |
591 return impl; | 593 return impl; |
594 } | |
595 | |
596 ciInstanceKlass* ciInstanceKlass::host_klass() { | |
597 assert(is_loaded(), "must be loaded"); | |
598 if (is_anonymous()) { | |
599 VM_ENTRY_MARK | |
600 Klass* host_klass = get_instanceKlass()->host_klass(); | |
601 return CURRENT_ENV->get_instance_klass(host_klass); | |
602 } | |
603 return NULL; | |
592 } | 604 } |
593 | 605 |
594 // Utility class for printing of the contents of the static fields for | 606 // Utility class for printing of the contents of the static fields for |
595 // use by compilation replay. It only prints out the information that | 607 // use by compilation replay. It only prints out the information that |
596 // could be consumed by the compiler, so for primitive types it prints | 608 // could be consumed by the compiler, so for primitive types it prints |