This discussion is archived
2 Replies Latest reply: Oct 3, 2011 8:11 AM by 892015 RSS

method parameters

892015 Newbie
Currently Being Moderated
Hello

I'm usimg this code to get the local variables in case of a method entry:
            error = jvmti->GetLocalVariableTable(method, &entryCount, &localVariableEntry);

            if(error == JVMTI_ERROR_NONE) {

                jvmtiLocalVariableEntry* entry = localVariableEntry;

                for(int i = 0; i < entryCount; i++, entry++) {

                    cout << entry->signature << ":" << entry->name << endl;
                    
                    jvmti->Deallocate(reinterpret_cast<unsigned char*>(entry->signature));
                    jvmti->Deallocate(reinterpret_cast<unsigned char*>(entry->name));
                    jvmti->Deallocate(reinterpret_cast<unsigned char*>(entry->generic_signature));
                    
                } // for

                jvmti->Deallocate(reinterpret_cast<unsigned char*>(localVariableEntry));

            } else if(error = JVMTI_ERROR_ABSENT_INFORMATION) {
                
                cout << "<NO LOCAL VARIABLE INFORMATION AVAILABLE>" << endl;
                
            } else {
                
                cout << "<ERROR>" << endl;
                
            } // if...else if...else
Now I'm wondering how to find the method parameters in all this local variables...
Is there a way to get obly the method parameters?

Thank you very much and with kind regards

Alexander Schell

Edited by: EJP on 3/10/2011 20:24: added {noformat}
{noformat} tags: please use them.

Edit: Moved the first code-tag

Edited by: user3948319 on 03.10.2011 08:02                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
  • 1. Re: method parameters
    EJP Guru
    Currently Being Moderated
    GetArgumentsSize() returns 'via max_ptr the number of local variable slots used by the method's arguments'. So the arguments are the first N local variable slots, taking due account of their size.
  • 2. Re: method parameters
    892015 Newbie
    Currently Being Moderated
    Hello and thanks for the answer...

    That was my first assumption...but after running the code I got some puzzling results...here's an example:

    callbackMethodEntry: methodName=reverse methodSignature=(Ljava/util/List;)V methodGenerigPtr=(Ljava/util/List<*>;)V classSignature=Ljava/util/Collections; thread=DestroyJavaVM
    I:i
    I:mid
    I:j
    Ljava/lang/Object;:tmp
    I:i
    I:mid
    Ljava/util/ListIterator;:fwd
    Ljava/util/ListIterator;:rev
    Ljava/util/List;:list
    I:size
    -----------------------------------------------

    The method entered takes surely one argument - a list...but the list is not the first entry in the array which is created by calling getLocalVariableTable...so I'm a wee bit confused right now...
    I also don't understand under which circumstances the JVMTI_ERROR_ABSENT_INFORMATION error is raised...

    before I forget: Thanks for the tip with the code tags...I looked for something to mark the code but could not find it...

    With kind regards

    Alexander Schell

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points