59 }
60
61
62 Instruction::Condition Instruction::negate(Condition cond) {
63 switch (cond) {
64 case eql: return neq;
65 case neq: return eql;
66 case lss: return geq;
67 case leq: return gtr;
68 case gtr: return leq;
69 case geq: return lss;
70 case aeq: assert(false, "Above equal cannot be negated");
71 case beq: assert(false, "Below equal cannot be negated");
72 }
73 ShouldNotReachHere();
74 return eql;
75 }
76
77 void Instruction::update_exception_state(ValueStack* state) {
78 if (state != NULL && (state->kind() == ValueStack::EmptyExceptionState || state->kind() == ValueStack::ExceptionState)) {
79 assert(state->kind() == ValueStack::EmptyExceptionState || Compilation::current()->env()->jvmti_can_access_local_variables(), "unexpected state kind");
80 _exception_state = state;
81 } else {
82 _exception_state = NULL;
83 }
84 }
85
86 // Prev without need to have BlockBegin
87 Instruction* Instruction::prev() {
88 Instruction* p = NULL;
89 Instruction* q = block();
90 while (q != this) {
91 assert(q != NULL, "this is not in the block's instruction list");
92 p = q; q = q->next();
93 }
94 return p;
95 }
96
97
98 void Instruction::state_values_do(ValueVisitor* f) {
99 if (state_before() != NULL) {
|
59 }
60
61
62 Instruction::Condition Instruction::negate(Condition cond) {
63 switch (cond) {
64 case eql: return neq;
65 case neq: return eql;
66 case lss: return geq;
67 case leq: return gtr;
68 case gtr: return leq;
69 case geq: return lss;
70 case aeq: assert(false, "Above equal cannot be negated");
71 case beq: assert(false, "Below equal cannot be negated");
72 }
73 ShouldNotReachHere();
74 return eql;
75 }
76
77 void Instruction::update_exception_state(ValueStack* state) {
78 if (state != NULL && (state->kind() == ValueStack::EmptyExceptionState || state->kind() == ValueStack::ExceptionState)) {
79 assert(state->kind() == ValueStack::EmptyExceptionState || Compilation::current()->env()->should_retain_local_variables(), "unexpected state kind");
80 _exception_state = state;
81 } else {
82 _exception_state = NULL;
83 }
84 }
85
86 // Prev without need to have BlockBegin
87 Instruction* Instruction::prev() {
88 Instruction* p = NULL;
89 Instruction* q = block();
90 while (q != this) {
91 assert(q != NULL, "this is not in the block's instruction list");
92 p = q; q = q->next();
93 }
94 return p;
95 }
96
97
98 void Instruction::state_values_do(ValueVisitor* f) {
99 if (state_before() != NULL) {
|