576 }
577 }
578 if (isPlaceholderBci(bci)) {
579 properties.put("bci", getPlaceholderBciName(bci));
580 }
581 properties.put("locksSize", values.size() - stackSize - localsSize);
582 return properties;
583 }
584
585 @Override
586 public boolean verify() {
587 if (virtualObjectMappingCount() > 0) {
588 for (EscapeObjectState state : virtualObjectMappings()) {
589 assertTrue(state != null, "must be non-null");
590 }
591 }
592 /*
593 * The outermost FrameState should have a method that matches StructuredGraph.method except
594 * when it's a substitution or it's null.
595 */
596 assertTrue(outerFrameState != null || graph() == null || graph().method() == null || code == null || Objects.equals(code.getMethod(), graph().method()) ||
597 graph().method().getAnnotation(MethodSubstitution.class) != null, "wrong outerFrameState %s != %s", code == null ? "null" : code.getMethod(), graph().method());
598 if (monitorIds() != null && monitorIds().size() > 0) {
599 int depth = outerLockDepth();
600 for (MonitorIdNode monitor : monitorIds()) {
601 assertTrue(monitor.getLockDepth() == depth++, "wrong depth");
602 }
603 }
604 assertTrue(locksSize() == monitorIdCount(), "mismatch in number of locks");
605 for (ValueNode value : values) {
606 assertTrue(value == null || !value.isDeleted(), "frame state must not contain deleted nodes: %s", value);
607 assertTrue(value == null || value instanceof VirtualObjectNode || (value.getStackKind() != JavaKind.Void), "unexpected value: %s", value);
608 }
609 verifyAfterExceptionState();
610 return super.verify();
611 }
612
613 private int outerLockDepth() {
614 int depth = 0;
615 FrameState outer = outerFrameState;
616 while (outer != null) {
|
576 }
577 }
578 if (isPlaceholderBci(bci)) {
579 properties.put("bci", getPlaceholderBciName(bci));
580 }
581 properties.put("locksSize", values.size() - stackSize - localsSize);
582 return properties;
583 }
584
585 @Override
586 public boolean verify() {
587 if (virtualObjectMappingCount() > 0) {
588 for (EscapeObjectState state : virtualObjectMappings()) {
589 assertTrue(state != null, "must be non-null");
590 }
591 }
592 /*
593 * The outermost FrameState should have a method that matches StructuredGraph.method except
594 * when it's a substitution or it's null.
595 */
596 assertTrue(outerFrameState != null || graph() == null || graph().method() == null || code == null || Objects.equals(graph().method(), code.getMethod()) ||
597 graph().method().getAnnotation(MethodSubstitution.class) != null, "wrong outerFrameState %s != %s", code == null ? "null" : code.getMethod(), graph().method());
598 if (monitorIds() != null && monitorIds().size() > 0) {
599 int depth = outerLockDepth();
600 for (MonitorIdNode monitor : monitorIds()) {
601 assertTrue(monitor.getLockDepth() == depth++, "wrong depth");
602 }
603 }
604 assertTrue(locksSize() == monitorIdCount(), "mismatch in number of locks");
605 for (ValueNode value : values) {
606 assertTrue(value == null || !value.isDeleted(), "frame state must not contain deleted nodes: %s", value);
607 assertTrue(value == null || value instanceof VirtualObjectNode || (value.getStackKind() != JavaKind.Void), "unexpected value: %s", value);
608 }
609 verifyAfterExceptionState();
610 return super.verify();
611 }
612
613 private int outerLockDepth() {
614 int depth = 0;
615 FrameState outer = outerFrameState;
616 while (outer != null) {
|