35 , _caller_state(caller_state)
36 , _bci(-99)
37 , _kind(Parsing)
38 , _locals(scope->method()->max_locals(), NULL)
39 , _stack(scope->method()->max_stack())
40 , _locks()
41 {
42 verify();
43 }
44
45
46 ValueStack::ValueStack(ValueStack* copy_from, Kind kind, int bci)
47 : _scope(copy_from->scope())
48 , _caller_state(copy_from->caller_state())
49 , _bci(bci)
50 , _kind(kind)
51 , _locals()
52 , _stack()
53 , _locks(copy_from->locks_size())
54 {
55 assert(kind != EmptyExceptionState || !Compilation::current()->env()->jvmti_can_access_local_variables(), "need locals");
56 if (kind != EmptyExceptionState) {
57 // only allocate space if we need to copy the locals-array
58 _locals = Values(copy_from->locals_size());
59 _locals.appendAll(©_from->_locals);
60 }
61
62 if (kind != ExceptionState && kind != EmptyExceptionState) {
63 if (kind == Parsing) {
64 // stack will be modified, so reserve enough space to avoid resizing
65 _stack = Values(scope()->method()->max_stack());
66 } else {
67 // stack will not be modified, so do not waste space
68 _stack = Values(copy_from->stack_size());
69 }
70 _stack.appendAll(©_from->_stack);
71 }
72
73 _locks.appendAll(©_from->_locks);
74
75 verify();
|
35 , _caller_state(caller_state)
36 , _bci(-99)
37 , _kind(Parsing)
38 , _locals(scope->method()->max_locals(), NULL)
39 , _stack(scope->method()->max_stack())
40 , _locks()
41 {
42 verify();
43 }
44
45
46 ValueStack::ValueStack(ValueStack* copy_from, Kind kind, int bci)
47 : _scope(copy_from->scope())
48 , _caller_state(copy_from->caller_state())
49 , _bci(bci)
50 , _kind(kind)
51 , _locals()
52 , _stack()
53 , _locks(copy_from->locks_size())
54 {
55 assert(kind != EmptyExceptionState || !Compilation::current()->env()->should_retain_local_variables(), "need locals");
56 if (kind != EmptyExceptionState) {
57 // only allocate space if we need to copy the locals-array
58 _locals = Values(copy_from->locals_size());
59 _locals.appendAll(©_from->_locals);
60 }
61
62 if (kind != ExceptionState && kind != EmptyExceptionState) {
63 if (kind == Parsing) {
64 // stack will be modified, so reserve enough space to avoid resizing
65 _stack = Values(scope()->method()->max_stack());
66 } else {
67 // stack will not be modified, so do not waste space
68 _stack = Values(copy_from->stack_size());
69 }
70 _stack.appendAll(©_from->_stack);
71 }
72
73 _locks.appendAll(©_from->_locks);
74
75 verify();
|