< prev index next >

src/hotspot/share/jvmci/jvmciCompilerToVM.cpp

Print this page
*** 131,11 ***
  
   private:
    friend class SignatureIterator;  // so do_parameters_on can call do_type
    void do_type(BasicType type) {
      if (is_reference_type(type)) {
!       _jca->push_oop(next_arg(T_OBJECT));
        return;
      }
      Handle arg = next_arg(type);
      int box_offset = java_lang_boxing_object::value_offset(type);
      switch (type) {
--- 131,11 ---
  
   private:
    friend class SignatureIterator;  // so do_parameters_on can call do_type
    void do_type(BasicType type) {
      if (is_reference_type(type)) {
!       (type == T_PRIMITIVE_OBJECT) ? _jca->push_oop(next_arg(T_PRIMITIVE_OBJECT)) : _jca->push_oop(next_arg(T_OBJECT));
        return;
      }
      Handle arg = next_arg(type);
      int box_offset = java_lang_boxing_object::value_offset(type);
      switch (type) {

*** 1513,11 ***
              }
  
              if (objects != nullptr) {
                RegisterMap reg_map(vf->register_map());
                bool realloc_failures = Deoptimization::realloc_objects(thread, vf->frame_pointer(), &reg_map, objects, CHECK_NULL);
!               Deoptimization::reassign_fields(vf->frame_pointer(), &reg_map, objects, realloc_failures, false);
                realloc_called = true;
              }
  
              GrowableArray<ScopeValue*>* local_values = scope->locals();
              for (int i = 0; i < local_values->length(); i++) {
--- 1513,11 ---
              }
  
              if (objects != nullptr) {
                RegisterMap reg_map(vf->register_map());
                bool realloc_failures = Deoptimization::realloc_objects(thread, vf->frame_pointer(), &reg_map, objects, CHECK_NULL);
!               Deoptimization::reassign_fields(vf->frame_pointer(), &reg_map, objects, realloc_failures, false, CHECK_NULL);
                realloc_called = true;
              }
  
              GrowableArray<ScopeValue*>* local_values = scope->locals();
              for (int i = 0; i < local_values->length(); i++) {

*** 1763,11 ***
      // no objects to materialize
      return;
    }
  
    bool realloc_failures = Deoptimization::realloc_objects(thread, fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, CHECK);
!   Deoptimization::reassign_fields(fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, realloc_failures, false);
  
    for (int frame_index = 0; frame_index < virtualFrames->length(); frame_index++) {
      compiledVFrame* cvf = virtualFrames->at(frame_index);
  
      GrowableArray<ScopeValue*>* scopedValues = cvf->scope()->locals();
--- 1763,11 ---
      // no objects to materialize
      return;
    }
  
    bool realloc_failures = Deoptimization::realloc_objects(thread, fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, CHECK);
!   Deoptimization::reassign_fields(fstAfterDeopt.current(), fstAfterDeopt.register_map(), objects, realloc_failures, false, THREAD);
  
    for (int frame_index = 0; frame_index < virtualFrames->length(); frame_index++) {
      compiledVFrame* cvf = virtualFrames->at(frame_index);
  
      GrowableArray<ScopeValue*>* scopedValues = cvf->scope()->locals();

*** 2087,11 ***
  
    InstanceKlass* iklass = InstanceKlass::cast(klass);
    GrowableArray<Method*> constructors_array;
    for (int i = 0; i < iklass->methods()->length(); i++) {
      Method* m = iklass->methods()->at(i);
!     if (m->is_initializer() && !m->is_static()) {
        constructors_array.append(m);
      }
    }
    JVMCIObjectArray methods = JVMCIENV->new_ResolvedJavaMethod_array(constructors_array.length(), JVMCI_CHECK_NULL);
    for (int i = 0; i < constructors_array.length(); i++) {
--- 2087,11 ---
  
    InstanceKlass* iklass = InstanceKlass::cast(klass);
    GrowableArray<Method*> constructors_array;
    for (int i = 0; i < iklass->methods()->length(); i++) {
      Method* m = iklass->methods()->at(i);
!     if (m->is_object_constructor()) {
        constructors_array.append(m);
      }
    }
    JVMCIObjectArray methods = JVMCIENV->new_ResolvedJavaMethod_array(constructors_array.length(), JVMCI_CHECK_NULL);
    for (int i = 0; i < constructors_array.length(); i++) {

*** 2114,11 ***
  
    InstanceKlass* iklass = InstanceKlass::cast(klass);
    GrowableArray<Method*> methods_array;
    for (int i = 0; i < iklass->methods()->length(); i++) {
      Method* m = iklass->methods()->at(i);
!     if (!m->is_initializer() && !m->is_overpass()) {
        methods_array.append(m);
      }
    }
    JVMCIObjectArray methods = JVMCIENV->new_ResolvedJavaMethod_array(methods_array.length(), JVMCI_CHECK_NULL);
    for (int i = 0; i < methods_array.length(); i++) {
--- 2114,11 ---
  
    InstanceKlass* iklass = InstanceKlass::cast(klass);
    GrowableArray<Method*> methods_array;
    for (int i = 0; i < iklass->methods()->length(); i++) {
      Method* m = iklass->methods()->at(i);
!     if (!(m->is_object_constructor() || m->is_class_initializer()) && !m->is_overpass()) {
        methods_array.append(m);
      }
    }
    JVMCIObjectArray methods = JVMCIENV->new_ResolvedJavaMethod_array(methods_array.length(), JVMCI_CHECK_NULL);
    for (int i = 0; i < methods_array.length(); i++) {

*** 2816,15 ***
  
  C2V_VMENTRY_NULL(jobject, asReflectionExecutable, (JNIEnv* env, jobject, ARGUMENT_PAIR(method)))
    requireInHotSpot("asReflectionExecutable", JVMCI_CHECK_NULL);
    methodHandle m(THREAD, UNPACK_PAIR(Method, method));
    oop executable;
!   if (m->is_initializer()) {
-     if (m->is_static_initializer()) {
        JVMCI_THROW_MSG_NULL(IllegalArgumentException,
            "Cannot create java.lang.reflect.Method for class initializer");
!     }
      executable = Reflection::new_constructor(m, CHECK_NULL);
    } else {
      executable = Reflection::new_method(m, false, CHECK_NULL);
    }
    return JNIHandles::make_local(THREAD, executable);
--- 2816,15 ---
  
  C2V_VMENTRY_NULL(jobject, asReflectionExecutable, (JNIEnv* env, jobject, ARGUMENT_PAIR(method)))
    requireInHotSpot("asReflectionExecutable", JVMCI_CHECK_NULL);
    methodHandle m(THREAD, UNPACK_PAIR(Method, method));
    oop executable;
!   if (m->is_class_initializer()) {
        JVMCI_THROW_MSG_NULL(IllegalArgumentException,
            "Cannot create java.lang.reflect.Method for class initializer");
!   }
+   else if (m->is_object_constructor() || m->is_static_vnew_factory()) {
      executable = Reflection::new_constructor(m, CHECK_NULL);
    } else {
      executable = Reflection::new_method(m, false, CHECK_NULL);
    }
    return JNIHandles::make_local(THREAD, executable);
< prev index next >