Check-in [22c1ca4e4a]

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Clear the exception register when an excpetion is handled, otherwise it will just propogate up always.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:22c1ca4e4a5d932368849e39a1371b21d53d509e
User & Date: stephanie.gawroriski 2019-06-16 20:11:20
Context
2019-06-16
20:16
Add exception handler catch all in the bootstrap. check-in: d365f39ae5 user: stephanie.gawroriski tags: trunk
20:11
Clear the exception register when an excpetion is handled, otherwise it will just propogate up always. check-in: 22c1ca4e4a user: stephanie.gawroriski tags: trunk
19:46
Use different digits for the debug point when exceptions are used. check-in: 25958e732f user: stephanie.gawroriski tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to runt/libs/tool-classfile/dev/shadowtail/classfile/nncc/NearNativeByteCodeHandler.java.

2604
2605
2606
2607
2608
2609
2610






2611
2612
2613
2614
2615
2616
2617
		// The byte code handler does not know about exception registers so
		// we need to add this operation in so it is handled correctly
		List<StateOperation> newsop = new ArrayList<>();
		for (StateOperation o : handled.operations())
			newsop.add(o);
		newsop.add(StateOperation.copy(false,
			NativeCode.EXCEPTION_REGISTER, handled.out(0).register));






		
		// Setup key
		ExceptionHandlerTransition key = new ExceptionHandlerTransition(
			new StateOperations(newsop), nothandled.enqueue(),
			state.exceptionranges.tableOf(state.addr));
		
		// Try to use an already existing point







>
>
>
>
>
>







2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
		// The byte code handler does not know about exception registers so
		// we need to add this operation in so it is handled correctly
		List<StateOperation> newsop = new ArrayList<>();
		for (StateOperation o : handled.operations())
			newsop.add(o);
		newsop.add(StateOperation.copy(false,
			NativeCode.EXCEPTION_REGISTER, handled.out(0).register));
		
		// Clear the exception register when it is handled, otherwise it
		// will just cause an exception fall off when the register is next
		// checked
		newsop.add(StateOperation.copy(false, NativeCode.ZERO_REGISTER,
			NativeCode.EXCEPTION_REGISTER));
		
		// Setup key
		ExceptionHandlerTransition key = new ExceptionHandlerTransition(
			new StateOperations(newsop), nothandled.enqueue(),
			state.exceptionranges.tableOf(state.addr));
		
		// Try to use an already existing point