mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 21:12:43 +00:00 
			
		
		
		
	 8da6c01d8f
			
		
	
	
		8da6c01d8f
		
	
	
	
	
		
			
			This feature had bitrotted somewhat and would trigger errors because PrimitiveStrings were "destroyed" but because of this mode they were not removed from the string cache. Even fixing that case running test-js with the options still failed in more places.
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			878 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			878 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, Idan Horowitz <idan.horowitz@serenityos.org>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <AK/HashMap.h>
 | |
| #include <LibJS/Runtime/GlobalObject.h>
 | |
| #include <LibJS/Runtime/Object.h>
 | |
| #include <LibJS/Runtime/WeakContainer.h>
 | |
| 
 | |
| namespace JS {
 | |
| 
 | |
| class WeakMap final
 | |
|     : public Object
 | |
|     , public WeakContainer {
 | |
|     JS_OBJECT(WeakMap, Object);
 | |
| 
 | |
| public:
 | |
|     static WeakMap* create(GlobalObject&);
 | |
| 
 | |
|     explicit WeakMap(Object& prototype);
 | |
|     virtual ~WeakMap() override;
 | |
| 
 | |
|     HashMap<Cell*, Value> const& values() const { return m_values; };
 | |
|     HashMap<Cell*, Value>& values() { return m_values; };
 | |
| 
 | |
|     virtual void remove_dead_cells(Badge<Heap>) override;
 | |
| 
 | |
| private:
 | |
|     void visit_edges(Visitor&) override;
 | |
| 
 | |
|     HashMap<Cell*, Value> m_values; // This stores Cell pointers instead of Object pointers to aide with sweeping
 | |
| };
 | |
| 
 | |
| }
 |