示例#1
0
jint ConstantPool::name_and_type_at(int index JVM_TRAPS) const {
  int offset = offset_from_checked_index(index JVM_ZCHECK(offset));
  cp_check_0(ConstantTag::is_name_and_type(tag_value_at(index)));
  int result = int_field(offset);
  GUARANTEE(result != 0, "sanity for JVM_ZCHECK");
  return result;
}
示例#2
0
ReturnOop ConstantPool::resolved_klass_at(int index JVM_TRAPS) const {
  int offset = offset_from_checked_index(index JVM_ZCHECK(offset));
  cp_check_0(ConstantTag::is_resolved_klass(tag_value_at(index)));
  return Universe::class_from_id(int_field(offset));
}
示例#3
0
  GUARANTEE(Synchronizer::is_locked_by(obj, thread), "Sanity check");
}

static int local_rand() {
  static unsigned int state = 0x23451921;
  const unsigned int multiplier = 0xDEECE66DL;
  const unsigned int addend = 0xBL;
  state = state * multiplier + addend;
  return (int)state;
}

jint Synchronizer::hash_code(JavaOop* obj JVM_TRAPS) {

  if (obj->klass() == _interned_string_near_addr) {
    JavaOop::Raw new_obj = get_lock_object_ref(obj, Thread::current(), false
                                               JVM_ZCHECK(new_obj));
    GUARANTEE(!obj->is_null(), "lock object is null!");
    *obj = new_obj;
  }
  JavaNear::Raw java_near = obj->klass();

  // Check if hash has been computed
  if (!java_near().has_hash()) { 
    UsingFastOops fast_oops;
    bool is_locked = java_near().is_locked();
    JavaClass::Fast c = java_near().klass();
    // Create a new near.
    java_near = Universe::new_java_near(&c JVM_CHECK_0);

    // use a pseudo-random 32-bit number as the hash value
    jint new_hash;
示例#4
0
}

ReturnOop ObjArrayClass::get_array_class(jint distance JVM_TRAPS) {
  if (distance == 1) {
    return obj();
  }
  UsingFastOops fast_oops;
  ObjArrayClass::Fast ac = compute_higher_dimension(JVM_SINGLE_ARG_ZCHECK(ac));
  return ac().get_array_class(distance - 1 JVM_NO_CHECK_AT_BOTTOM_0);
}

ReturnOop ObjArrayClass::multi_allocate(int rank, JavaFrame* frame JVM_TRAPS) { 
  UsingFastOops fast_oops;
  int length = frame->expression_at(rank - 1)->as_int();
  ObjArray::Fast result = Universe::allocate_array(this, length, oopSize        
                                                   JVM_ZCHECK(result));
  JavaClass::Fast lower;
  if (rank > 1) {
    // Allocate all the sub arrays
    lower = element_class();
    if (lower.is_obj_array_class()) {
      ObjArrayClass *oc = (ObjArrayClass*)&lower;
      if (length == 0) {
        /*
         * If there is a zero dimension value, subsequent dimensions should not
         * be allocated, but JVMS requires to throw NegativeArraySizeException 
         * if *any* of dimension values is negative.
         */
        for (int r = rank - 2; r >= 0; r--) {
          int sub_length = frame->expression_at(r)->as_int();
          if (sub_length < 0) {