mirror of
				https://github.com/LadybirdBrowser/ladybird.git
				synced 2025-10-25 01:19:45 +00:00 
			
		
		
		
	When resuming execution of a suspended function, we must not overwrite any cached `this` value with something from the ExecutionContext. This was causing an empty JS::Value to leak into the VM when resuming an async arrow function, since the "this mode" for such functions is lexical and thus ExecutionContext will have an empty `this`. It became a problem due to the bytecode optimization where we allow ourselves to assume that `this` remains cached after we've executed a ResolveThisBinding in this (or the first) basic block of the executable. Fixes https://github.com/LadybirdBrowser/ladybird/issues/138
		
			
				
	
	
		
			8 lines
		
	
	
	
		
			172 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			8 lines
		
	
	
	
		
			172 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| test("this value in async function", () => {
 | |
|     function X() {
 | |
|         this.boog = async () => {
 | |
|             this.f = await null;
 | |
|         };
 | |
|     }
 | |
|     new X().boog();
 | |
| });
 |