소스 검색

LibJS: Make Value::as_cell() return a Cell&

Andreas Kling 4 년 전
부모
커밋
47a4b2ba9f
3개의 변경된 파일7개의 추가작업 그리고 7개의 파일을 삭제
  1. 1 1
      Userland/Libraries/LibJS/Heap/Heap.cpp
  2. 3 3
      Userland/Libraries/LibJS/Runtime/VM.cpp
  3. 3 3
      Userland/Libraries/LibJS/Runtime/Value.h

+ 1 - 1
Userland/Libraries/LibJS/Heap/Heap.cpp

@@ -92,7 +92,7 @@ void Heap::gather_roots(HashTable<Cell*>& roots)
     for (auto* list : m_marked_value_lists) {
     for (auto* list : m_marked_value_lists) {
         for (auto& value : list->values()) {
         for (auto& value : list->values()) {
             if (value.is_cell())
             if (value.is_cell())
-                roots.set(value.as_cell());
+                roots.set(&value.as_cell());
         }
         }
     }
     }
 
 

+ 3 - 3
Userland/Libraries/LibJS/Runtime/VM.cpp

@@ -93,15 +93,15 @@ void VM::gather_roots(HashTable<Cell*>& roots)
     roots.set(m_exception);
     roots.set(m_exception);
 
 
     if (m_last_value.is_cell())
     if (m_last_value.is_cell())
-        roots.set(m_last_value.as_cell());
+        roots.set(&m_last_value.as_cell());
 
 
     for (auto& call_frame : m_call_stack) {
     for (auto& call_frame : m_call_stack) {
         if (call_frame->this_value.is_cell())
         if (call_frame->this_value.is_cell())
-            roots.set(call_frame->this_value.as_cell());
+            roots.set(&call_frame->this_value.as_cell());
         roots.set(call_frame->arguments_object);
         roots.set(call_frame->arguments_object);
         for (auto& argument : call_frame->arguments) {
         for (auto& argument : call_frame->arguments) {
             if (argument.is_cell())
             if (argument.is_cell())
-                roots.set(argument.as_cell());
+                roots.set(&argument.as_cell());
         }
         }
         roots.set(call_frame->scope);
         roots.set(call_frame->scope);
     }
     }

+ 3 - 3
Userland/Libraries/LibJS/Runtime/Value.h

@@ -222,10 +222,10 @@ public:
         return *m_value.as_symbol;
         return *m_value.as_symbol;
     }
     }
 
 
-    Cell* as_cell()
+    Cell& as_cell()
     {
     {
         VERIFY(is_cell());
         VERIFY(is_cell());
-        return m_value.as_cell;
+        return *m_value.as_cell;
     }
     }
 
 
     Accessor& as_accessor()
     Accessor& as_accessor()
@@ -330,7 +330,7 @@ inline Value js_negative_infinity()
 inline void Cell::Visitor::visit(Value value)
 inline void Cell::Visitor::visit(Value value)
 {
 {
     if (value.is_cell())
     if (value.is_cell())
-        visit_impl(*value.as_cell());
+        visit_impl(value.as_cell());
 }
 }
 
 
 Value greater_than(GlobalObject&, Value lhs, Value rhs);
 Value greater_than(GlobalObject&, Value lhs, Value rhs);