Check-in [2dabb55ba2]

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

Overview
Comment:Stop of an out of range register is decoded; Add debug note.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:2dabb55ba2c2e5703315ed403bd34eaf94555588
User & Date: stephanie.gawroriski 2019-06-14 00:15:35
Context
2019-06-14
07:02
Backup developer notes. check-in: d6dd3b8ed8 user: squirreljme tags: trunk
00:15
Stop of an out of range register is decoded; Add debug note. check-in: 2dabb55ba2 user: stephanie.gawroriski tags: trunk
2019-06-13
23:59
Protect return values with temporary registers so they are not destroyed during uncounts. check-in: 1e543c9951 user: stephanie.gawroriski tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to runt/klib/supervisor/cc/squirreljme/jvm/JVMFunction.java.

408
409
410
411
412
413
414

415
416
417
418
419
420
421
		Assembly.memWriteInt(rv, Constants.OBJECT_CLASS_OFFSET,
			__cl);
		Assembly.memWriteInt(rv, Constants.OBJECT_COUNT_OFFSET,
			1);
		
		// Debug
		todo.DEBUG.code('N', 'E', rv);

		
		// Use this pointer
		return rv;
	}
	
	/**
	 * Allocates a new array.







>







408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
		Assembly.memWriteInt(rv, Constants.OBJECT_CLASS_OFFSET,
			__cl);
		Assembly.memWriteInt(rv, Constants.OBJECT_COUNT_OFFSET,
			1);
		
		// Debug
		todo.DEBUG.code('N', 'E', rv);
		todo.DEBUG.code('N', 'c', __cl);
		
		// Use this pointer
		return rv;
	}
	
	/**
	 * Allocates a new array.

Changes to runt/libs/summercoat-vm/cc/squirreljme/vm/summercoat/NativeCPU.java.

293
294
295
296
297
298
299







300
301
302
303
304
305
306
							
							// Set
							if (af[i] == ArgumentFormat.VJUMP)
								args[i] = (short)(base |
									((base & 0x4000) << 1));
							else
								args[i] = base;







						}
						break;
					
					// Register list.
					case REGLIST:
						{
							// Wide







>
>
>
>
>
>
>







293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
							
							// Set
							if (af[i] == ArgumentFormat.VJUMP)
								args[i] = (short)(base |
									((base & 0x4000) << 1));
							else
								args[i] = base;
							
							// {@squirreljme.error AE0a Reference to register
							// which is out of range of maximum number of
							// registers. (The register index)}
							if (af[i] == ArgumentFormat.VUREG &&
								(base < 0 || base >= NativeCode.MAX_REGISTERS))
								throw new VMException("AE0a " + base);
						}
						break;
					
					// Register list.
					case REGLIST:
						{
							// Wide