< prev index next >

src/hotspot/share/code/nmethod.cpp

Print this page

3042       ResourceMark rm;
3043       int sizeargs = m->size_of_parameters();
3044       BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, sizeargs);
3045       VMRegPair* regs   = NEW_RESOURCE_ARRAY(VMRegPair, sizeargs);
3046       {
3047         int sig_index = 0;
3048         if (!m->is_static())
3049           sig_bt[sig_index++] = T_OBJECT; // 'this'
3050         for (SignatureStream ss(m->signature()); !ss.at_return_type(); ss.next()) {
3051           BasicType t = ss.type();
3052           sig_bt[sig_index++] = t;
3053           if (type2size[t] == 2) {
3054             sig_bt[sig_index++] = T_VOID;
3055           } else {
3056             assert(type2size[t] == 1, "size is 1 or 2");
3057           }
3058         }
3059         assert(sig_index == sizeargs, "");
3060       }
3061       const char* spname = "sp"; // make arch-specific?
3062       intptr_t out_preserve = SharedRuntime::java_calling_convention(sig_bt, regs, sizeargs);
3063       int stack_slot_offset = this->frame_size() * wordSize;
3064       int tab1 = 14, tab2 = 24;
3065       int sig_index = 0;
3066       int arg_index = (m->is_static() ? 0 : -1);
3067       bool did_old_sp = false;
3068       for (SignatureStream ss(m->signature()); !ss.at_return_type(); ) {
3069         bool at_this = (arg_index == -1);
3070         bool at_old_sp = false;
3071         BasicType t = (at_this ? T_OBJECT : ss.type());
3072         assert(t == sig_bt[sig_index], "sigs in sync");
3073         if (at_this)
3074           stream->print("  # this: ");
3075         else
3076           stream->print("  # parm%d: ", arg_index);
3077         stream->move_to(tab1);
3078         VMReg fst = regs[sig_index].first();
3079         VMReg snd = regs[sig_index].second();
3080         if (fst->is_reg()) {
3081           stream->print("%s", fst->name());
3082           if (snd->is_valid())  {

3042       ResourceMark rm;
3043       int sizeargs = m->size_of_parameters();
3044       BasicType* sig_bt = NEW_RESOURCE_ARRAY(BasicType, sizeargs);
3045       VMRegPair* regs   = NEW_RESOURCE_ARRAY(VMRegPair, sizeargs);
3046       {
3047         int sig_index = 0;
3048         if (!m->is_static())
3049           sig_bt[sig_index++] = T_OBJECT; // 'this'
3050         for (SignatureStream ss(m->signature()); !ss.at_return_type(); ss.next()) {
3051           BasicType t = ss.type();
3052           sig_bt[sig_index++] = t;
3053           if (type2size[t] == 2) {
3054             sig_bt[sig_index++] = T_VOID;
3055           } else {
3056             assert(type2size[t] == 1, "size is 1 or 2");
3057           }
3058         }
3059         assert(sig_index == sizeargs, "");
3060       }
3061       const char* spname = "sp"; // make arch-specific?
3062       SharedRuntime::java_calling_convention(sig_bt, regs, sizeargs);
3063       int stack_slot_offset = this->frame_size() * wordSize;
3064       int tab1 = 14, tab2 = 24;
3065       int sig_index = 0;
3066       int arg_index = (m->is_static() ? 0 : -1);
3067       bool did_old_sp = false;
3068       for (SignatureStream ss(m->signature()); !ss.at_return_type(); ) {
3069         bool at_this = (arg_index == -1);
3070         bool at_old_sp = false;
3071         BasicType t = (at_this ? T_OBJECT : ss.type());
3072         assert(t == sig_bt[sig_index], "sigs in sync");
3073         if (at_this)
3074           stream->print("  # this: ");
3075         else
3076           stream->print("  # parm%d: ", arg_index);
3077         stream->move_to(tab1);
3078         VMReg fst = regs[sig_index].first();
3079         VMReg snd = regs[sig_index].second();
3080         if (fst->is_reg()) {
3081           stream->print("%s", fst->name());
3082           if (snd->is_valid())  {
< prev index next >