本文整理汇总了C++中objArrayOop::base方法的典型用法代码示例。如果您正苦于以下问题:C++ objArrayOop::base方法的具体用法?C++ objArrayOop::base怎么用?C++ objArrayOop::base使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类objArrayOop
的用法示例。
在下文中一共展示了objArrayOop::base方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: oop_oop_iterate_elements_specialized
void ObjArrayKlass::oop_oop_iterate_elements_specialized(objArrayOop a, OopClosureType* closure) {
T* p = (T*)a->base();
T* const end = p + a->length();
for (;p < end; p++) {
Devirtualizer<nv>::do_oop(closure, p);
}
}
示例2: oop_oop_iterate_range_specialized
void ObjArrayKlass::oop_oop_iterate_range_specialized(objArrayOop a, OopClosureType* closure, int start, int end) {
if (Devirtualizer<nv>::do_metadata(closure)) {
Devirtualizer<nv>::do_klass(closure, a->klass());
}
T* low = start == 0 ? cast_from_oop<T*>(a) : a->obj_at_addr<T>(start);
T* high = (T*)a->base() + end;
oop_oop_iterate_elements_specialized_bounded<nv, T>(a, closure, low, high);
}
示例3: oop_pc_follow_contents_specialized
inline void oop_pc_follow_contents_specialized(objArrayOop obj, int index, ParCompactionManager* cm) {
const size_t len = size_t(obj->length());
const size_t beg_index = size_t(index);
assert(beg_index < len || len == 0, "index too large");
const size_t stride = MIN2(len - beg_index, ObjArrayMarkingStride);
const size_t end_index = beg_index + stride;
T* const base = (T*)obj->base();
T* const beg = base + beg_index;
T* const end = base + end_index;
// Push the non-NULL elements of the next stride on the marking stack.
for (T* e = beg; e < end; e++) {
cm->mark_and_push<T>(e);
}
if (end_index < len) {
cm->push_objarray(obj, end_index); // Push the continuation.
}
}
示例4: oop_oop_iterate_elements_specialized_bounded
void ObjArrayKlass::oop_oop_iterate_elements_specialized_bounded(
objArrayOop a, OopClosureType* closure, void* low, void* high) {
T* const l = (T*)low;
T* const h = (T*)high;
T* p = (T*)a->base();
T* end = p + a->length();
if (p < l) {
p = l;
}
if (end > h) {
end = h;
}
for (;p < end; ++p) {
Devirtualizer<nv>::do_oop(closure, p);
}
}
示例5: oop_oop_iterate_range_specialized
void ObjArrayKlass::oop_oop_iterate_range_specialized(objArrayOop a, OopClosureType* closure, int start, int end) {
T* low = start == 0 ? cast_from_oop<T*>(a) : a->obj_at_addr<T>(start);
T* high = (T*)a->base() + end;
oop_oop_iterate_elements_specialized_bounded<nv, T>(a, closure, low, high);
}