equal
deleted
inserted
replaced
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(); |