hotspot/src/share/vm/runtime/javaCalls.hpp
changeset 5419 f2e8cc8c12ea
parent 1623 a0dd9009e992
child 5547 f4b087cbb361
equal deleted inserted replaced
5418:c4955cb6ed33 5419:f2e8cc8c12ea
    64   enum Constants {
    64   enum Constants {
    65    _default_size = 8    // Must be at least # of arguments in JavaCalls methods
    65    _default_size = 8    // Must be at least # of arguments in JavaCalls methods
    66   };
    66   };
    67 
    67 
    68   intptr_t    _value_buffer [_default_size + 1];
    68   intptr_t    _value_buffer [_default_size + 1];
    69   intptr_t    _parameter_buffer [_default_size*2 + 1];
       
    70   bool        _is_oop_buffer[_default_size + 1];
    69   bool        _is_oop_buffer[_default_size + 1];
    71 
    70 
    72   intptr_t*   _value;
    71   intptr_t*   _value;
    73   intptr_t*   _parameters;
       
    74   bool*       _is_oop;
    72   bool*       _is_oop;
    75   int         _size;
    73   int         _size;
    76   int         _max_size;
    74   int         _max_size;
    77   bool        _start_at_zero;      // Support late setting of receiver
    75   bool        _start_at_zero;      // Support late setting of receiver
    78 
    76 
    79   void initialize() {
    77   void initialize() {
    80     // Starts at first element to support set_receiver.
    78     // Starts at first element to support set_receiver.
    81     _value    = &_value_buffer[1];
    79     _value    = &_value_buffer[1];
    82     _is_oop   = &_is_oop_buffer[1];
    80     _is_oop   = &_is_oop_buffer[1];
    83 
    81 
    84     _parameters = &_parameter_buffer[0];
       
    85     _max_size = _default_size;
    82     _max_size = _default_size;
    86     _size = 0;
    83     _size = 0;
    87     _start_at_zero = false;
    84     _start_at_zero = false;
    88   }
    85   }
    89 
    86 
    97 
    94 
    98   JavaCallArguments(int max_size) {
    95   JavaCallArguments(int max_size) {
    99     if (max_size > _default_size) {
    96     if (max_size > _default_size) {
   100       _value  = NEW_RESOURCE_ARRAY(intptr_t, max_size + 1);
    97       _value  = NEW_RESOURCE_ARRAY(intptr_t, max_size + 1);
   101       _is_oop = NEW_RESOURCE_ARRAY(bool, max_size + 1);
    98       _is_oop = NEW_RESOURCE_ARRAY(bool, max_size + 1);
   102       if (TaggedStackInterpreter) {
    99 
   103         _parameters  = NEW_RESOURCE_ARRAY(intptr_t, max_size*2 + 1);
       
   104       }
       
   105       // Reserve room for potential receiver in value and is_oop
   100       // Reserve room for potential receiver in value and is_oop
   106       _value++; _is_oop++;
   101       _value++; _is_oop++;
       
   102 
   107       _max_size = max_size;
   103       _max_size = max_size;
   108       _size = 0;
   104       _size = 0;
   109       _start_at_zero = false;
   105       _start_at_zero = false;
   110     } else {
   106     } else {
   111       initialize();
   107       initialize();