Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3c74dc9f4d 
								
							 
						 
						
							
							
								
								LibJS: Segregate GC-allocated objects by type  
							
							... 
							
							
							
							This patch adds two macros to declare per-type allocators:
- JS_DECLARE_ALLOCATOR(TypeName)
- JS_DEFINE_ALLOCATOR(TypeName)
When used, they add a type-specific CellAllocator that the Heap will
delegate allocation requests to.
The result of this is that GC objects of the same type always end up
within the same HeapBlock, drastically reducing the ability to perform
type confusion attacks.
It also improves HeapBlock utilization, since each block now has cells
sized exactly to the type used within that block. (Previously we only
had a handful of block sizes available, and most GC allocations ended
up with a large amount of slack in their tails.)
There is a small performance hit from this, but I'm sure we can make
up for it elsewhere.
Note that the old size-based allocators still exist, and we fall back
to them for any type that doesn't have its own CellAllocator. 
							
						 
						
							2023-11-19 12:10:31 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									networkException 
								
							 
						 
						
							
							
							
							
								
							
							
								33b40eaeed 
								
							 
						 
						
							
							
								
								LibJS: Add LoadedModules to Script and CyclicModule  
							
							
							
						 
						
							2023-10-31 18:09:14 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Linus Groh 
								
							 
						 
						
							
							
							
							
								
							
							
								22089436ed 
								
							 
						 
						
							
							
								
								LibJS: Convert Heap::allocate{,_without_realm}() to NonnullGCPtr  
							
							
							
						 
						
							2022-12-15 06:56:37 -05:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								e6331031c4 
								
							 
						 
						
							
							
								
								LibJS: Make Parser::Error a standalone ParserError class  
							
							... 
							
							
							
							This allows us to forward declare it and reduce the number of things
that need to include Parser.h. 
							
						 
						
							2022-11-23 16:05:59 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d13d571844 
								
							 
						 
						
							
							
								
								LibJS: Make sure JS::Script visits its HostDefined object  
							
							... 
							
							
							
							This allows JS::Script to mark its corresponding HTML::Script, even if
it's a little roundabout looking. Fixes an issue where the JS::Script
was kept alive by the execution stack, but the HTML::Script was gone.
This was originally part of 8f9ed415a0 
							
						 
						
							2022-09-06 01:21:09 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								00c8f07192 
								
							 
						 
						
							
							
								
								LibJS: Make Script and Module GC-allocated  
							
							... 
							
							
							
							This ensures that code currently in any active or saved execution stack
always stays alive. 
							
						 
						
							2022-09-06 00:27:09 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Linus Groh 
								
							 
						 
						
							
							
							
							
								
							
							
								7767f9be37 
								
							 
						 
						
							
							
								
								LibJS: Rename some variables from "script body" to "script"  
							
							... 
							
							
							
							This is an editorial change in the ECMA-262 spec.
See: 38a2584 
							
						 
						
							2022-05-01 22:47:38 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Linus Groh 
								
							 
						 
						
							
							
							
							
								
							
							
								ee1379520a 
								
							 
						 
						
							
							
								
								LibJS: Add missing whitespace around namespace curly braces  
							
							
							
						 
						
							2022-04-17 23:00:35 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Lenny Maiorani 
								
							 
						 
						
							
							
							
							
								
							
							
								d00b79568f 
								
							 
						 
						
							
							
								
								Libraries: Use default constructors/destructors in LibJS  
							
							... 
							
							
							
							https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#cother-other-default-operation-rules 
"The compiler is more likely to get the default semantics right and
you cannot implement these functions better than the compiler." 
						
							2022-03-16 16:19:40 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Idan Horowitz 
								
							 
						 
						
							
							
							
							
								
							
							
								c575710e5e 
								
							 
						 
						
							
							
								
								LibWeb: Use inline script tag source line as javascript line offset  
							
							... 
							
							
							
							This makes JS exception line numbers meaningful for inline script tags. 
							
						 
						
							2022-03-14 00:25:33 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								aeb72fe9d0 
								
							 
						 
						
							
							
								
								LibJS: Reduce header dependency graph in Realm.h  
							
							
							
						 
						
							2022-02-07 19:16:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								6ddbe8f953 
								
							 
						 
						
							
							
								
								LibJS: Add [[HostDefined]] internal slot to Script objects  
							
							... 
							
							
							
							In C++, this is a raw pointer to a Script::HostDefined. 
							
						 
						
							2022-02-07 19:16:46 +01:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									davidot 
								
							 
						 
						
							
							
							
							
								
							
							
								12c2f30c54 
								
							 
						 
						
							
							
								
								LibJS: Add filename tracking to Script and Module  
							
							... 
							
							
							
							This will allow us to resolve modules dynamically loaded from a script. 
							
						 
						
							2022-01-22 01:21:18 +00:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								20fb900937 
								
							 
						 
						
							
							
								
								LibJS+LibWeb: Move script parse time logging from JS::Script to LibWeb  
							
							... 
							
							
							
							Let's only log HTML::ClassicScript parse times for now. Otherwise things
will get excessively noisy in test-js and the test262 runner. 
							
						 
						
							2021-09-14 21:41:51 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								10c489713d 
								
							 
						 
						
							
							
								
								LibJS+LibWeb: Let JS::Script::parse() return a list of errors (on error)  
							
							... 
							
							
							
							These are really supposed to be a list of SyntaxError objects, but for
now we simply return all the Parser::Error objects we got from Parser. 
							
						 
						
							2021-09-14 21:41:51 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								f08a46bd9e 
								
							 
						 
						
							
							
								
								LibJS: Make JS::Script keep the VM alive  
							
							... 
							
							
							
							Script has a Handle member (m_realm), and for handles to remain valid,
the VM must stay alive. 
							
						 
						
							2021-09-14 21:41:51 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								3ca2e701e6 
								
							 
						 
						
							
							
								
								LibJS: Log scripts parsed by JS::Script::parse() and how long it took  
							
							
							
						 
						
							2021-09-13 22:21:57 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Linus Groh 
								
							 
						 
						
							
							
							
							
								
							
							
								106f295916 
								
							 
						 
						
							
							
								
								LibJS+LibWeb: Make JS::Script and Web::HTML::ClassicScript use Realms  
							
							... 
							
							
							
							The spec wants Script Records to have a Realm, not a GlobalObject. 
							
						 
						
							2021-09-12 15:18:25 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								1484980f8f 
								
							 
						 
						
							
							
								
								LibWeb+LibJS: Remember source filenames when using HTML::Script  
							
							... 
							
							
							
							It's a lot easier to debug JavaScript problems if you can see which file
the errors are in. :^) 
							
						 
						
							2021-09-11 00:36:37 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								d823d7da54 
								
							 
						 
						
							
							
								
								LibJS: Implement the ParseScript AO (as JS::Script::parse())  
							
							
							
						 
						
							2021-09-09 21:25:10 +02:00 
							
								 
							
							
								 
							
						 
					 
				
					
						
							
								
								
									Andreas Kling 
								
							 
						 
						
							
							
							
							
								
							
							
								612a23d6fc 
								
							 
						 
						
							
							
								
								LibJS: Start adding a JS::Script class (spec's "Script Record")  
							
							
							
						 
						
							2021-09-09 21:25:10 +02:00