Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3fc0333ee6 
								
							 
						 
						
							
							
								
								LibJS: Put Bytecode::CallFrame + register slots in a single allocation  
							
							... 
							
							
							
							The number of registers in a call frame never changes, so we can
allocate it at the end of the CallFrame object and save ourselves the
cost of allocating separate Vector storage for every call frame. 
							
						 
						
							2023-11-29 09:48:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3dc5f467a8 
								
							 
						 
						
							
							
								
								LibJS: Always allocate ExecutionContext objects on the malloc heap  
							
							... 
							
							
							
							Instead of allocating these in a mixture of ways, we now always put
them on the malloc heap, and keep an intrusive linked list of them
that we can iterate for GC marking purposes. 
							
						 
						
							2023-11-29 09:48:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								ecfcc9aef3 
								
							 
						 
						
							
							
								
								LibJS: Make Bytecode::Executable GC-allocated  
							
							... 
							
							
							
							This is a step towards making ExecutionContext easier to allocate. 
							
						 
						
							2023-11-29 09:48:18 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Stephan Vedder 
								
							 
						 
						
							
							
							
							
								
							
							
								84eecbb10e 
								
							 
						 
						
							
							
								
								LibJS/JIT: Add fastpath for set variable  
							
							
							
						 
						
							2023-11-19 22:36:07 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Idan Horowitz 
								
							 
						 
						
							
							
							
							
								
							
							
								f19349e1b6 
								
							 
						 
						
							
							
								
								LibJS: Instantiate primitive array expressions using a single operation  
							
							... 
							
							
							
							This will not meaningfully affect short array literals, but it does
give us a bit of extra perf when evaluating huge array expressions like
in Kraken/imaging-darkroom.js 
							
						 
						
							2023-11-18 08:37:34 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								86b85aa68b 
								
							 
						 
						
							
							
								
								LibJS: Introduce Builtins  
							
							... 
							
							
							
							Builtins are functions that can be detected during bytecode generation
and enable fast-paths in the JIT. 
							
						 
						
							2023-11-17 19:06:25 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								cb7169d73f 
								
							 
						 
						
							
							
								
								LibJS/JIT: Support the EnterObjectEnvironment bytecode instruction  
							
							... 
							
							
							
							We can now use `with` statements in jitted code. :^) 
							
						 
						
							2023-11-12 14:21:41 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								cfdb8a2756 
								
							 
						 
						
							
							
								
								LibJS/JIT: Update "unwind context" stack in JIT code  
							
							... 
							
							
							
							Until now, the unwind context stack has not been maintained by jitted
code, which meant we were unable to support the `with` statement.
This is a first step towards supporting that by making jitted code
call out to C++ to update the unwind context stack when entering/leaving
unwind contexts.
We also introduce a new "Catch" bytecode instruction that moves the
current exception into the accumulator. It's always emitted at the start
of a "catch" block. 
							
						 
						
							2023-11-12 14:21:41 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								298dfa96a4 
								
							 
						 
						
							
							
								
								LibJS: Remove unused members from EnterUnwindContext instruction  
							
							
							
						 
						
							2023-11-12 14:21:41 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b6435ca280 
								
							 
						 
						
							
							
								
								LibJS: Unify bytecode instruction names with their helper names  
							
							
							
						 
						
							2023-11-12 14:21:41 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								2520c46224 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the GetCalleeAndThisFromEnvironment cache at JIT time  
							
							
							
						 
						
							2023-11-10 14:49:25 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b1b2ca1485 
								
							 
						 
						
							
							
								
								LibJS: Add basic monomorphic caching for PutById property access  
							
							... 
							
							
							
							This patch makes it possible for JS::Object::internal_set() to populate
a CacheablePropertyMetadata, and uses this to implement a basic
monomorphic cache for the most common form of property write access. 
							
						 
						
							2023-11-09 16:02:14 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								536b9c29e4 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the EnvironmentVariableCache pointers at JIT time  
							
							
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								a616a682fe 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the GlobalVariableCache pointers at JIT time  
							
							
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f03d4a1ffe 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the PropertyLookupCache pointers at JIT time  
							
							... 
							
							
							
							We know where the lookup cache is by the time we're jitting code, so
let's put the pointer directly into the instruction stream. 
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3b6b9b9f25 
								
							 
						 
						
							
							
								
								LibJS: Take VM instead of Interpreter in more common implementations  
							
							
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								234ed2d466 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the GetGlobal identifier at JIT time  
							
							
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c92954db36 
								
							 
						 
						
							
							
								
								LibJS/JIT: Resolve the GetById property name at JIT time  
							
							... 
							
							
							
							We can resolve the IdentifierTableIndex to a DeprecatedFlyString& once
when jitting the code, instead of every time GetById executes. 
							
						 
						
							2023-11-06 13:06:10 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								dd466ec83a 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Remove the PushDeclarativeEnvironment instruction  
							
							
							
						 
						
							2023-11-03 07:31:11 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								e400682fb1 
								
							 
						 
						
							
							
								
								LibJS/JIT: Support alternative entry point blocks  
							
							... 
							
							
							
							If Interpreter::run_and_return_frame is called with a specific entry
point we now map that to a native instruction address, which the JIT
code jumps to after the function prologue. 
							
						 
						
							2023-11-03 07:31:11 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Idan Horowitz 
								
							 
						 
						
							
							
							
							
								
							
							
								38f3b78a1d 
								
							 
						 
						
							
							
								
								LibJS: Store the bytecode accumulator in a dedicated physical register  
							
							... 
							
							
							
							We now use a dedicated physical register to store the bytecode
accumulator, instead of loading and storing it to the memory everytime. 
							
						 
						
							2023-11-02 22:35:35 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								68f4d21de2 
								
							 
						 
						
							
							
								
								LibJS: Lazily collect stack trace information  
							
							... 
							
							
							
							The previous implementation was calling `backtrace()` for every
function call, which is quite slow.
Instead, this implementation provides VM::stack_trace() which unwinds
the native stack, maps it through NativeExecutable::get_source_range
and combines it with source ranges from interpreted call frames. 
							
						 
						
							2023-11-02 07:37:41 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								fb7b4b9c59 
								
							 
						 
						
							
							
								
								LibJS/JIT: Provide source location information for JIT code  
							
							... 
							
							
							
							This works by walking a backtrace until the currently executing
native executable is found, and then mapping the native address
to its bytecode instruction. 
							
						 
						
							2023-10-31 07:07:17 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Hendiadyoin1 
								
							 
						 
						
							
							
							
							
								
							
							
								1341f4438d 
								
							 
						 
						
							
							
								
								LibJS: Save scheduled jumps when entering unwind contexts  
							
							... 
							
							
							
							These are then restored upon `ContinuePendingUnwind`.
This stops us from forgetting where we needed to jump when we do extra
try-catches in finally blocks.
Co-Authored-By: Jesús "gsus" Lapastora <cyber.gsuscode@gmail.com> 
							
						 
						
							2023-10-30 13:10:08 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Hendiadyoin1 
								
							 
						 
						
							
							
							
							
								
							
							
								4da5b8ec67 
								
							 
						 
						
							
							
								
								LibJS: Reset scheduled-jump flag when throwing an exception  
							
							... 
							
							
							
							Otherwise we might attempt to follow the scheduled jump later 
							
						 
						
							2023-10-30 13:10:08 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Hendiadyoin1 
								
							 
						 
						
							
							
							
							
								
							
							
								f5645e3c9c 
								
							 
						 
						
							
							
								
								LibJS: Use static unwind mappings for unwind related functions  
							
							
							
						 
						
							2023-10-30 13:10:08 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								ad81bf47bb 
								
							 
						 
						
							
							
								
								LibJS: Move GetObjectPropertyIterator impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 22:57:19 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jakub Berkop 
								
							 
						 
						
							
							
							
							
								
							
							
								6a7b9b85a4 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the DeleteByValueWithThis instruction  
							
							
							
						 
						
							2023-10-29 21:51:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jakub Berkop 
								
							 
						 
						
							
							
							
							
								
							
							
								0776404e03 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the DeleteByValue instruction  
							
							
							
						 
						
							2023-10-29 21:51:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Jakub Berkop 
								
							 
						 
						
							
							
							
							
								
							
							
								f5fcd4596c 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the DeleteById instruction  
							
							
							
						 
						
							2023-10-29 21:51:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								516bb01082 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move Append impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 17:36:09 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								5179ff5fc9 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move IteratorToArray impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 17:36:09 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								661dbbc83d 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move object_to_iterator to CommonImplementations  
							
							
							
						 
						
							2023-10-29 17:36:09 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								d416cef9bb 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move iterator_to_object to CommonImplementations  
							
							
							
						 
						
							2023-10-29 17:36:09 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								1eee110575 
								
							 
						 
						
							
							
								
								LibJS: Move SuperCallWithArgumentArray impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 17:36:09 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								f9fbb8cff2 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move NewClass impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 07:44:11 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Simon Wanner 
								
							 
						 
						
							
							
							
							
								
							
							
								54f1f7a51b 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move CreateVariable impl to CommonImplementations  
							
							
							
						 
						
							2023-10-29 07:44:11 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Idan Horowitz 
								
							 
						 
						
							
							
							
							
								
							
							
								b2d8d0c270 
								
							 
						 
						
							
							
								
								LibJS: Compile the CallWithArgumentArray bytecode instruction  
							
							
							
						 
						
							2023-10-28 20:27:16 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c1551a64dc 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the NewRegExp bytecode instruction  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								935d67cfcf 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the GetCalleeAndThisFromEnvironment instruction  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								dabaaabfc0 
								
							 
						 
						
							
							
								
								LibJS/JIT: Support the GetVariable bytecode instruction  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								bcf7cdb679 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Un-templatize throw_if_needed_for_call()  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								c2aad0f573 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move PutByValue impl to CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								9f61cda27e 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move NewFunction impl into CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								393d90abe1 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move SetVariable implementation to CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d368dc5d25 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move TypeofVariable impl to CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								640455b1d2 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the Call bytecode instruction  
							
							... 
							
							
							
							I've left a FIXME about dealing with some throwsy cases. 
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								7fc35fde09 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move throw_if_needed_for_call to CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								b56ecc7e34 
								
							 
						 
						
							
							
								
								LibJS/Bytecode: Move perform_call helper to CommonImplementations  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								580249d650 
								
							 
						 
						
							
							
								
								LibJS/JIT: Compile the PutById bytecode instruction  
							
							
							
						 
						
							2023-10-27 19:07:22 +02:00