Andreas Kling
1c43442be4
LibJS+Clients: Add JS::VM object, separate Heap from Interpreter
...
Taking a big step towards a world of multiple global object, this patch
adds a new JS::VM object that houses the JS::Heap.
This means that the Heap moves out of Interpreter, and the same Heap
can now be used by multiple Interpreters, and can also outlive them.
The VM keeps a stack of Interpreter pointers. We push/pop on this
stack when entering/exiting execution with a given Interpreter.
This allows us to make this change without disturbing too much of
the existing code.
There is still a 1-to-1 relationship between Interpreter and the
global object. This will change in the future.
Ultimately, the goal here is to make Interpreter a transient object
that only needs to exist while you execute some code. Getting there
will take a lot more work though. :^)
Note that in LibWeb, the global JS::VM is called main_thread_vm(),
to distinguish it from future worker VM's.
2020-09-20 19:24:44 +02:00
..
2020-08-26 08:45:01 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-09-08 14:16:59 +02:00
2020-08-17 21:23:11 +02:00
2020-09-08 16:20:34 +02:00
2020-09-08 16:20:34 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-09-08 14:16:59 +02:00
2020-07-23 17:31:08 +02:00
2020-07-25 13:12:17 +02:00
2020-06-07 19:29:40 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-04-29 18:47:03 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-08-24 18:21:16 +02:00
2020-08-24 18:21:16 +02:00
2020-08-24 18:20:07 +02:00
2020-08-21 21:12:54 +02:00
2020-08-23 22:00:05 +02:00
2020-08-23 22:00:05 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-06-11 07:46:20 +02:00
2020-07-22 19:22:00 +02:00
2020-09-08 13:43:03 +02:00
2020-06-02 15:22:34 +02:00
2020-06-23 17:21:53 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-09-20 19:24:44 +02:00
2020-07-11 18:54:13 +02:00
2020-09-08 13:43:03 +02:00
2020-09-08 13:43:03 +02:00
2020-09-08 14:15:13 +02:00
2020-09-08 14:15:13 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-09-19 14:17:22 +02:00
2020-07-23 17:31:08 +02:00
2020-08-25 18:30:31 +02:00
2020-06-29 17:54:54 +02:00
2020-09-08 13:43:03 +02:00
2020-09-08 13:43:03 +02:00
2020-08-04 11:31:11 +02:00
2020-07-23 17:31:08 +02:00
2020-09-20 19:11:11 +02:00
2020-09-20 19:11:11 +02:00
2020-06-23 17:56:57 +02:00
2020-06-23 17:56:57 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-06-23 17:21:53 +02:00
2020-07-15 18:24:55 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-09-20 19:18:05 +02:00
2020-07-23 17:31:08 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-25 13:12:17 +02:00
2020-04-04 12:58:05 +02:00
2020-06-06 22:13:01 +02:00
2020-06-06 22:13:01 +02:00
2020-07-09 23:33:00 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-08-26 08:45:01 +02:00
2020-07-11 23:13:29 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-06-20 17:50:48 +02:00
2020-06-20 17:50:48 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-06-20 15:46:30 +02:00
2020-06-21 15:15:52 +02:00
2020-09-12 09:31:16 +02:00
2020-07-23 17:31:08 +02:00
2020-09-20 19:11:49 +02:00
2020-07-09 23:33:00 +02:00
2020-08-22 10:52:40 +02:00
2020-07-23 17:31:08 +02:00
2020-07-13 15:07:29 +02:00
2020-07-13 15:07:29 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-06-23 17:21:53 +02:00
2020-06-21 15:15:52 +02:00
2020-08-16 20:31:05 +02:00
2020-08-25 18:30:31 +02:00
2020-07-23 17:31:08 +02:00
2020-07-25 13:12:17 +02:00
2020-08-27 10:12:04 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-07-09 23:29:28 +02:00
2020-07-09 23:29:28 +02:00
2020-07-23 17:31:08 +02:00
2020-07-23 17:31:08 +02:00
2020-08-25 18:30:31 +02:00
2020-06-21 15:15:52 +02:00
2020-08-26 08:45:01 +02:00
2020-07-14 20:15:19 +02:00
2020-09-20 19:24:44 +02:00
2020-09-20 19:24:44 +02:00