src/share/vm/adlc/main.cpp

Print this page
rev 4449 : 8003853: specify offset of IC load in java_to_interp stub

If a compiled static call calls the interpreter, it jumps past a
java_to_interp stub in the compiled code. Patching this call must
find the load of the IC. So far the shared code assumed this is the
first instruction in the stub.
This might not be the case if, for example, the base of the constant
table must be loaded as it happens on PPC.  The position of the IC
load is platform dependent, but used in shared code.

To fix this, this change cleans up the code handling compiled static
Java calls:
 - Methods using native instructions are moved from compiledIC.cpp
   to compiledIC_<cpu>.cpp
   With this the offset can be implemented platform dependent.
 - Methods emitting the stub moved from the ad file to this class.
   As a side effect this reduces redundancies in x86_64.ad and x86_32.ad.
 - We get rid of extern declarations in output.cpp.

Now all code concerning CompiledStaticCalls is collected on one class,
except for emitting the call itself.  The PPC port needs not change
shared code any more to implement them.


 196   AD.addSunCopyright(legal_text, legal_sz, AD._HPP_file._fp);           // .hpp
 197   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_file._fp);           // .cpp
 198   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_CLONE_file._fp);     // .cpp
 199   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_EXPAND_file._fp);    // .cpp
 200   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_FORMAT_file._fp);    // .cpp
 201   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_GEN_file._fp);       // .cpp
 202   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_MISC_file._fp);      // .cpp
 203   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_PEEPHOLE_file._fp);  // .cpp
 204   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_PIPELINE_file._fp);  // .cpp
 205   AD.addSunCopyright(legal_text, legal_sz, AD._VM_file._fp);            // .hpp
 206   AD.addSunCopyright(legal_text, legal_sz, AD._DFA_file._fp);           // .cpp
 207   // Add include guards for all .hpp files
 208   AD.addIncludeGuardStart(AD._HPP_file, "GENERATED_ADFILES_AD_HPP");        // .hpp
 209   AD.addIncludeGuardStart(AD._VM_file, "GENERATED_ADFILES_ADGLOBALS_HPP");  // .hpp
 210   // Add includes
 211   AD.addInclude(AD._CPP_file, "precompiled.hpp");
 212   AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._VM_file._name));
 213   AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._HPP_file._name));
 214   AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp");
 215   AD.addInclude(AD._CPP_file, "asm/macroAssembler.inline.hpp");

 216   AD.addInclude(AD._CPP_file, "code/vmreg.hpp");
 217   AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
 218   AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp");
 219   AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
 220   AD.addInclude(AD._CPP_file, "oops/method.hpp");
 221   AD.addInclude(AD._CPP_file, "oops/oop.inline.hpp");
 222   AD.addInclude(AD._CPP_file, "oops/oop.inline2.hpp");
 223   AD.addInclude(AD._CPP_file, "opto/cfgnode.hpp");
 224   AD.addInclude(AD._CPP_file, "opto/locknode.hpp");
 225   AD.addInclude(AD._CPP_file, "opto/opcodes.hpp");
 226   AD.addInclude(AD._CPP_file, "opto/regalloc.hpp");
 227   AD.addInclude(AD._CPP_file, "opto/regmask.hpp");
 228   AD.addInclude(AD._CPP_file, "opto/runtime.hpp");
 229   AD.addInclude(AD._CPP_file, "runtime/biasedLocking.hpp");
 230   AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
 231   AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
 232   AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
 233 #ifdef TARGET_ARCH_x86
 234   AD.addInclude(AD._CPP_file, "nativeInst_x86.hpp");
 235   AD.addInclude(AD._CPP_file, "vmreg_x86.inline.hpp");




 196   AD.addSunCopyright(legal_text, legal_sz, AD._HPP_file._fp);           // .hpp
 197   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_file._fp);           // .cpp
 198   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_CLONE_file._fp);     // .cpp
 199   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_EXPAND_file._fp);    // .cpp
 200   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_FORMAT_file._fp);    // .cpp
 201   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_GEN_file._fp);       // .cpp
 202   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_MISC_file._fp);      // .cpp
 203   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_PEEPHOLE_file._fp);  // .cpp
 204   AD.addSunCopyright(legal_text, legal_sz, AD._CPP_PIPELINE_file._fp);  // .cpp
 205   AD.addSunCopyright(legal_text, legal_sz, AD._VM_file._fp);            // .hpp
 206   AD.addSunCopyright(legal_text, legal_sz, AD._DFA_file._fp);           // .cpp
 207   // Add include guards for all .hpp files
 208   AD.addIncludeGuardStart(AD._HPP_file, "GENERATED_ADFILES_AD_HPP");        // .hpp
 209   AD.addIncludeGuardStart(AD._VM_file, "GENERATED_ADFILES_ADGLOBALS_HPP");  // .hpp
 210   // Add includes
 211   AD.addInclude(AD._CPP_file, "precompiled.hpp");
 212   AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._VM_file._name));
 213   AD.addInclude(AD._CPP_file, "adfiles", get_basename(AD._HPP_file._name));
 214   AD.addInclude(AD._CPP_file, "memory/allocation.inline.hpp");
 215   AD.addInclude(AD._CPP_file, "asm/macroAssembler.inline.hpp");
 216   AD.addInclude(AD._CPP_file, "code/compiledIC.hpp");
 217   AD.addInclude(AD._CPP_file, "code/vmreg.hpp");
 218   AD.addInclude(AD._CPP_file, "gc_interface/collectedHeap.inline.hpp");
 219   AD.addInclude(AD._CPP_file, "oops/compiledICHolder.hpp");
 220   AD.addInclude(AD._CPP_file, "oops/markOop.hpp");
 221   AD.addInclude(AD._CPP_file, "oops/method.hpp");
 222   AD.addInclude(AD._CPP_file, "oops/oop.inline.hpp");
 223   AD.addInclude(AD._CPP_file, "oops/oop.inline2.hpp");
 224   AD.addInclude(AD._CPP_file, "opto/cfgnode.hpp");
 225   AD.addInclude(AD._CPP_file, "opto/locknode.hpp");
 226   AD.addInclude(AD._CPP_file, "opto/opcodes.hpp");
 227   AD.addInclude(AD._CPP_file, "opto/regalloc.hpp");
 228   AD.addInclude(AD._CPP_file, "opto/regmask.hpp");
 229   AD.addInclude(AD._CPP_file, "opto/runtime.hpp");
 230   AD.addInclude(AD._CPP_file, "runtime/biasedLocking.hpp");
 231   AD.addInclude(AD._CPP_file, "runtime/sharedRuntime.hpp");
 232   AD.addInclude(AD._CPP_file, "runtime/stubRoutines.hpp");
 233   AD.addInclude(AD._CPP_file, "utilities/growableArray.hpp");
 234 #ifdef TARGET_ARCH_x86
 235   AD.addInclude(AD._CPP_file, "nativeInst_x86.hpp");
 236   AD.addInclude(AD._CPP_file, "vmreg_x86.inline.hpp");