summaryrefslogtreecommitdiff
path: root/Libraries
AgeCommit message (Collapse)Author
2020-03-19Kernel & LibC: Add CLOCK_REALTIME constantLiav A
2020-03-19LibJS: Parse FunctionExpressionsAndreas Kling
FunctionExpression is mostly like FunctionDeclaration, except the name is optional. Share the parsing logic in parse_function_node<NodeType>. This allows us to do nice things like: document.addEventListener("DOMContentLoaded", function() { alert("Hello friends!"); });
2020-03-19LibJS: Add FunctionExpression AST nodeAndreas Kling
Most of the code is shared with FunctionDeclaration, so the shared bits are moved up into a common base called FunctionNode.
2020-03-19LibJS: Fix reference leak in ASTNode::append()Andreas Kling
Using make<T> like this would create an unadopted object whose refcount would never reach zero.
2020-03-18LibJS: Add missing copyright headersAndreas Kling
2020-03-18LibWeb: Add missing copyright headersAndreas Kling
2020-03-18LibWeb: Use a JS::Handle to keep the EventListener function aliveAndreas Kling
2020-03-18LibJS: Add Handle<T>, a strong C++ handle for keeping GC objects aliveAndreas Kling
This is pretty heavy and unoptimized, but it will do the trick for now. Basically, Heap now has a HashTable<HandleImpl*> and you can call JS::make_handle(T*) to construct a Handle<T> that guarantees that the pointee will always survive GC until the Handle<T> is destroyed.
2020-03-18LibWeb: Fire "mousedown" and "mousemove" events in the DOM :^)Andreas Kling
2020-03-18LibWeb: Start working on DOM event supportAndreas Kling
This patch adds the EventTarget class and makes Node inherit from it. You can register event listeners on an EventTarget, and when you call dispatch_event() on it, the event listeners will get invoked. An event listener is basically a wrapper around a JS::Function*. This is pretty far from how DOM events should eventually work, but it's a place to start and we'll build more on top of this. :^)
2020-03-18LibJS: Tolerate NativeFunction::call() with non-object 'this' for nowAndreas Kling
I'm not exactly sure why we end up in this situation, we'll have to look into it.
2020-03-18LibJS: Add Function to Forward.hAndreas Kling
2020-03-18LibJS: Add Interpreter::call(Function*, this_value, arguments)Andreas Kling
This helper function takes care of pushing/popping a call frame so you don't need to worry about it.
2020-03-18HackStudio: Expand project tree view by defaultOriko
2020-03-18LibWeb: Don't try to repaint frameless documents in CSSStyleValueAndreas Kling
2020-03-18LibJS: Make the AST reference-countedAndreas Kling
This allows function objects to outlive the original parsed program without their ScopeNode disappearing.
2020-03-18LibCore: Moved cal.cpp functions to DateTimerhin123
2020-03-17LibJS: Implement typeof operatorConrad Pankoff
2020-03-17LibJS: Pass argument value vectors as const Vector<Value>&Andreas Kling
Now that Interpreter keeps all arguments in the CallFrame stack, we can just pass a const-reference to the CallFrame's argument vector to each function handler (instead of copying it.)
2020-03-17LibJS: Protect function call "this" and arguments from GCAndreas Kling
This patch adds a CallFrame stack to Interpreter, which keeps track of the "this" value and all argument values passed in function calls. Interpreter::gather_roots() scans the call stack, making sure that all argument values get marked. :^)
2020-03-16LibJS+js: Add a debug option (js -g) to GC after every allocationAndreas Kling
This is very useful for discovering collector bugs.
2020-03-16LibJS: Implement basic conservative garbage collectionAndreas Kling
We now scan the stack and CPU registers for potential pointers into the GC heap, and include any valid Cell pointers in the set of roots. This works pretty well but we'll also need to solve marking of things passed to native functions, since those are currently in Vector<Value> and the Vector storage is on the heap (not scanned.)
2020-03-16Kernel: Add sys$get_stack_bounds() for finding the stack base & sizeAndreas Kling
This will be useful when implementing conservative garbage collection.
2020-03-16LibJS: Replace the global print() function with console.log() :^)Andreas Kling
2020-03-16LibJS: Add "Heap" and "Runtime" subdirectoriesAndreas Kling
Let's try to keep LibJS tidy as it expands. :^)
2020-03-16LibJS: Implement abstract equality and inequality0xtechnobabble
2020-03-16LibJS: Loosen type system0xtechnobabble
This commits makes effort towards tolerating some of javascript's quirks when it comes to its type system, note that the interpreter's way of handling type coercion is still not mature at all, for example, we still have to implement NaN instead of just crashing when trying to parse a string and failing.
2020-03-16LibJS/Parser: Parse logical expressions0xtechnobabble
2020-03-16LibJS: Specify overridden functions with 'override'0xtechnobabble
2020-03-16LibJS: Implement null and undefined literals0xtechnobabble
2020-03-16LibJS: Fix assignment of const variable on declaration0xtechnobabble
We were previously assuming that we were reassigning a variable even when we were not, oops, my bad. :/
2020-03-16LibGUI: Add a ThemeChange eventOriko
2020-03-16LibGUI: Use themes for syntax highlightingOriko
2020-03-15LibJS: Add String.prototype.repeat() :^)Andreas Kling
2020-03-15LibJS: Pass "this" as an Object* to NativeFunction callbacksAndreas Kling
Instead of every NativeFunction callback having to ask the Interpreter for the current "this" value and then converting it to an Object etc, just pass "this" as an Object* directly.
2020-03-15LibJS: Add a mechanism for callback-based object propertiesAndreas Kling
This patch adds NativeProperty, which can be used to implement object properties that have C++ getters and/or setters. Use this to move String.prototype.length to its correct place. :^)
2020-03-15LibJS: Remove debug spam in Object::get()Andreas Kling
2020-03-15Userland: ifconfig can change the IP address of the default gatewaymarprok
ioctl can now perform a request for a specific route and change the address of it's default gateway.
2020-03-15LibJS: Add ObjectPrototype and implement hasOwnProperty()Andreas Kling
All Objects will now have ObjectPrototype as their prototype, unless overridden.
2020-03-15LibJS: Rename collect_roots() => gather_roots()Andreas Kling
Since this is about finding the things we should *not* garabge collect, it seemed wrong to call it "collect_something" :^)
2020-03-15LibJS: Use the same StringPrototype globallyAndreas Kling
To make sure that everyone has the same instance of StringPrototype, hang a global prototype off of the Interpreter that can be fetched when constructing new StringObjects.
2020-03-15LibJS: Add Cell::interpreter() convenience helperAndreas Kling
This allows you to go from any Cell* to the Interpreter.
2020-03-15LibJS: Interpreter should make sure that the "this" stack gets markedAndreas Kling
2020-03-15LibJS: Add StringPrototype and make it the prototype of StringObjectAndreas Kling
This patch adds String.prototype.charAt() to demonstrate that prototype property lookup works, and that you can call a prototype function on an object, and it will do what you expect. :^)
2020-03-15LibJS: Add basic prototype supportAndreas Kling
Object will now traverse up the prototype chain when doing a get(). When a function is called on an object, that object will now also be the "this" value inside the function. This stuff is probably not very correct, but we will improve things as we go! :^)
2020-03-15LibJS: Add Value::to_i32() helper functionAndreas Kling
2020-03-15LibWeb: Add missing copyright headersAndreas Kling
2020-03-14LibCore: Rename Udp classes to UDPShannon Booth
The kernel was already using the UDP prefix, and the TCP LibCore classes are also uppercased. Let's rename for consistency. Also order the LibCore Makefile alphabetically, because everywhere else seems to be doing that :)
2020-03-14LibJS/Parser: Implement the parsing of unary/prefixed update expressions0xtechnobabble
2020-03-14LibJS/AST: Implement prefixed update expressions0xtechnobabble