summaryrefslogtreecommitdiff
path: root/Libraries
AgeCommit message (Collapse)Author
2020-03-20LibWeb: Make hit testing better for blocks with inline childrenAndreas Kling
If we don't hit one of the inline children, we should still report that we've hit the block itself.
2020-03-19LibGUI: Remove G prefix from macrosTibor Nagy
2020-03-19LibGUI: Remove friend classes of TextDocumentLineTibor Nagy
They were unused. Also GTextEditor doesn't exist anymore and GCC was silently ignoring this declaration.
2020-03-19LibGUI: Remove remaining G prefixesTibor Nagy
2020-03-19LibWeb: Add <canvas> element and start fleshing out CRC2DAndreas Kling
This patch adds HTMLCanvasElement along with a LayoutCanvas object. The DOM and layout parts are very similar to <img> elements. The <canvas> element holds a Gfx::Bitmap which is sized according to the "width" and "height" attributes on the element. Calling .getContext("2d") on a <canvas> element gives you a context object that draws into the underlying Gfx::Bitmap of the <canvas>. The context weakly points to the <canvas> which allows it to outlive the canvas element if needed. This is really quite cool. :^)
2020-03-19LibJS: Prefer FunctionDeclaration if a statement begins with "function"Andreas Kling
2020-03-19LibJS: Implement basic object property assignmentAndreas Kling
This is pretty naive, we just walk up the prototype chain and call any NativeProperty setter that we find. If we don't find one, we put/set the value as an own property of the object itself.
2020-03-19LibCore: Use monotonic time when handling timersLiav A
2020-03-19LibC: Add new syscall to allow changing the system dateLiav A
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.