summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-03-25LibWeb: Node::is_parent_node() should return true for DocumentFragmentsAndreas Kling
2020-03-25Meta: Ignore the LibJS test runner script when lintingAndreas Kling
Making this work in the absence of bash is more cumbersome than simply skipping it at the moment.
2020-03-25WindowServer: Don't ignore mouse events after showing modal window (#1495)Alex Muscar
Fixes #1464
2020-03-25Keymap: Add FR keymap layoutredoste
This adds the standard French "AZERTY" keyboard layout. Some keys are unmapped because some characters are not supported : ²éèçà°€¨£¤ùµ§
2020-03-25Build: Oops, LibJS tests were meant to go in /home/anon/js-testsAndreas Kling
2020-03-25LibJS: Handle "for" statements with empty initializer and updaterAndreas Kling
2020-03-25LibJS: Add a basic test for the "throw" keywordAndreas Kling
2020-03-25LibJS: Rename some testsAndreas Kling
"feature-basic" is a bit more logical than having a ton of "basic-feature" (when it comes to the visual overview of it all.)
2020-03-25Ports/bash: Make a /bin/bash symlink to /usr/local/bin/bashAndreas Kling
I've added a post_install step to the system that allows you to run arbitrary commands after the regular install step. This allows scripts that start with "#!/bin/bash" to work in Serenity.
2020-03-25Build: Copy LibJS/Tests into /home/anon/js-testsAndreas Kling
The test runner currently depends on the bash port being installed. If you have it, you can run the LibJS test suite inside Serenity by simply entering /home/anon/js-tests and doing ./run-tests :^)
2020-03-25LibJS: Tweak run-tests output a bitAndreas Kling
2020-03-25uname: Remove trailing space characterAndreas Kling
2020-03-25LibJS: Add a very basic test runner (shell script) + some testsAndreas Kling
2020-03-25LibJS: Remove unnecessary space character at the end of console.log()Andreas Kling
2020-03-25LibWeb: Remove debug spam about getting a 2D canvas contextAndreas Kling
2020-03-25LibJS: Fix parsing of `if (typeof "foo" === "string")`Andreas Kling
Move parsing of unary expressions into the primary expression parsing step so that `typeof` takes precedence over `===` in the above example.
2020-03-25LibJS: Disable HEAP_DEBUG logging on non-SerenityOS platformsAndreas Kling
This makes it a bit easier to work with LibJS on Linux for now.
2020-03-25js: Remove debug message about what the interpreter returnedAndreas Kling
If you want to see what the interpreter returned, use "js -l" :^)
2020-03-24AK: Fix JsonParser kernel build (no floats/doubles in kernel code)Andreas Kling
2020-03-24LibJS: Implement "throw"Andreas Kling
You can now throw an expression to the nearest catcher! :^) To support throwing arbitrary values, I added an Exception class that sits as a wrapper around whatever is thrown. In the future it will be a logical place to store a call stack.
2020-03-24LibJS: Remove debug spam in Error.prototype.nameAndreas Kling
2020-03-24AK: Add parsing of JSON double valuesEmanuel Sprung
This patch adds the parsing of double values to the JSON parser. There is another char buffer that get's filled when a "." is present in the number parsing. When number finished, a divider is calculated to transform the number behind the "." to the actual fraction value.
2020-03-24AK: Add get_or() method to JsonObjectEmanuel Sprung
This allows to retrieve a default value for items thare are not available in the json object.
2020-03-24Interrupts: Handle spurious IRQs from eoi() methodLiav A
2020-03-24Interrupts: Use Optional container in IOAPICLiav A
We return the Optional container in find_redirection_entry_by_vector() method instead of a raw integer. This makes the code more readable and correct.
2020-03-24Interrupts: Simplify IRQ disabling & enabling in IRQController(s)Liav A
Instead of blindly setting masks, if we want to disable an IRQ and it's already masked, we just return. The same happens if we want to enable an IRQ and it's unmasked.
2020-03-24Interrupts: Remove unused methodsLiav A
2020-03-24Kernel: Simplify disable_irq() and enable_irq() methods in IRQHandlerLiav A
Setting the m_enabled variable to true or false can help with monitoring the IRQHandler object(s) later, and there's no good reason to have an if-else statement in those methods anyway.
2020-03-24Interrupts: Do a specific EOI when using the PICLiav A
Before this change, we did a non-specific EOI, which could lead to problems with other IRQs that are handled in the PIC. Since the original 8259A datasheet permits such functionality and we are not losing any functionality, this change is acceptable even though we don't experience problems with the EOI currently.
2020-03-24Kernel: Limit IRQ rate within E1000 network adapterLiav A
This is not a complete fix, since spurious IRQs under heavy loads can still occur. However, this fix limits the amount of spurious IRQs. It is encouraged to provide a better fix in the future, probably something that takes into account handling of PCI level-triggered interrupts.
2020-03-24Interrupts: Assert if trying to install an handler on syscall vectorLiav A
Installing an interrupt handler on the syscall IDT vector can lead to fatal results, so we must assert if that happens.
2020-03-24Kernel: Abstract IRQ controller handling from Interrupt handlersLiav A
Now we don't send raw numbers, but we let the IRQController object to figure out the correct IRQ number. This helps in a situation when we have 2 or more IOAPICs, so if IOAPIC 1 is assigned for IRQs 0-23 and IOAPIC 2 is assigned for IRQs 24-47, if an IRQHandler of IRQ 25 invokes disable() for example, it will call his responsible IRQController (IOAPIC 2), and the IRQController will subtract the IRQ number with his assigned offset, and the result is that the second redirection entry in IOAPIC 2 will be masked.
2020-03-24Kernel: Correct Spurious Interrupt handlers' controller model() methodLiav A
We don't return blindly the IRQ controller's model(), if the Spurious IRQ handler is installed in IOAPIC environment, it's misleading to return "IOAPIC" string since IOAPIC doesn't really handle Spurious IRQs, therefore we return a "" string.
2020-03-24Kernel: Create an interface for conversion between IRQs and interruptsLiav A
2020-03-24Kernel: Ensure that we don't use a hard-disabled IRQControllerLiav A
2020-03-24Kernel: Enable IRQs before sending commands to the E1000 adapterLiav A
This change prevents a race condition, in which case we send a command and we are losing an interrupt.
2020-03-24Kernel: Change the Spurious Interrupt Handler offset in the APICLiav A
The Spurious Interrupt Handler number that is written to APIC_REG_SIV is correct now.
2020-03-24CPU: Move EOI call to the end of handle_interrupt()Liav A
2020-03-24Kernel: Run QEMU machine with two virtual processorsLiav A
2020-03-24Kernel: Change noacpi GRUB entry to use the right boot argumentLiav A
2020-03-24LibJS: Use correct |this| value when getting/setting native propertiesAndreas Kling
2020-03-24js: Make the -l command-line argument actually workAndreas Kling
2020-03-24LibJS: Implement basic exception throwingAndreas Kling
You can now throw exceptions by calling Interpreter::throw_exception(). Anyone who calls ASTNode::execute() needs to check afterwards if the Interpreter now has an exception(), and if so, stop what they're doing and simply return. When catching an exception, we'll first execute the CatchClause node if present. After that, we'll execute the finalizer block if present. This is unlikely to be completely correct, but it's a start! :^)
2020-03-24LibJS: Parse "try", "catch" and "finally"Andreas Kling
This is the first step towards support exceptions. :^)
2020-03-24AK: Add FlyString::is_null()Andreas Kling
2020-03-23 LibWeb: CSS: Add "position: absolute" with top and leftmyphs
This momentarily handles the CSS property "position: absolute;" in combination with the properties "top" and "left", so that elements can be placed anywhere on the page independently from their parents. Statically positioned elements ignore absolute positioned elements when calculating their position as they don't take up space.
2020-03-23LibJS: Actually leave the current function scope on "return"Andreas Kling
We now unwind until the nearest function-level scope on the scope stack when executing a return statement.
2020-03-23LibJS: Consume semicolon at the end of a statementAndreas Kling
A bunch of code was relying on this not happenind, in particular the parsing of "for" statements. Reorganized things so they work again.
2020-03-23LibJS: Implement "else" parsingAndreas Kling
We can now handle scripts with if/else in LibJS. Most of the changes are about fixing IfStatement to store the consequent and alternate node as Statements. Interpreter now also runs Statements, rather than running ScopeNodes.
2020-03-23LibJS: Always collect all garbage when destroying HeapAndreas Kling
When the Heap is going down, it's our last chance to run destructors, so add a separate collector mode where we simply skip over the marking phase and go directly to sweeping. This causes everything to get swept and all live cells get destroyed. This way, valgrind reports 0 leaks on exit. :^)