summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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. :^)
2020-03-23LibJS: Teach the lexer to recognize ">=" and "<=" :^)Andreas Kling
2020-03-23AK: Reduce header dependency graph of String.hAndreas Kling
String.h no longer pulls in StringView.h. We do this by moving a bunch of String functions out-of-line.
2020-03-23LibJS: Put some more Heap debug logging behind HEAP_DEBUGAndreas Kling
2020-03-23Lagom: Build LibJS + "js" test programAndreas Kling
You can now get a full Linux build of the "js" test program by simply building in Meta/Lagom :^)
2020-03-23LibJS: Port garbage collector to LinuxAndreas Kling
Well that was easy. LibJS can now run on Linux :^)
2020-03-23LibJS: Use rand() for Math.random() on other systemsAndreas Kling
I bet we could be smarter here and use arc4random() on systems where it is present. I'm not sure how to detect it though.
2020-03-23LibCore: Tweak DateTime.cpp so it compiles on Linux + drive-by bug fixAndreas Kling
2020-03-23Toolchain/Ports: Update gcc to 9.3.0Shannon Booth
Ever closer to C++20! Also fix up some of those pesky "'s
2020-03-23Taskbar: Remove FIXME re: tooltip rendering since it's now working (#1502)Nick Tiberi
2020-03-22LibWeb: Implement cancelAnimationFrame()Andreas Kling
These functions (rAF and cAF) should eventually stop using raw ID's from GUI::DisplayLink as their identifiers. That's a FIXME for now. :^)
2020-03-22LibWeb: Add basic support for requestAnimationFrame()Andreas Kling
We now support rAF, driven by GUI::DisplayLink callbacks. It's a bit strange how we keep registering new callbacks over and over. That's something we can definitely optimize. This allows you to update animations/whatever without doing it more often than the browser can display.
2020-03-22WindowServer+LibGUI: Add a way to get notified at display refresh rateAndreas Kling
This patch adds GUI::DisplayLink, a mechanism for registering callbacks that will fire at the display refresh rate. Note that we don't actually know the screen refresh rate, but this is instead completely driven by WindowServer's compositing timer. For all current intents and purposes it does the job well enough. :^)
2020-03-22WindowServer: Improve the close button shapeChris
2020-03-22LibWeb: Use FlyString for DOM event namesAndreas Kling
2020-03-22LibWeb: Use FlyString for Element tag namesAndreas Kling
This makes selector matching a lot more efficient, and also reduces the number of strings on the heap.
2020-03-22AK: Add FlyString::to_lowercase() and LogStream operator<<(FlyString)Andreas Kling
2020-03-22LibGUI: Allow constructing Variant from FlyStringAndreas Kling
2020-03-22LibWeb: Use FlyString for element attribute namesAndreas Kling
Attribute names occur again and again.
2020-03-22AK: Add FlyString::equals_ignoring_case(StringView)Andreas Kling
And share the code with String by moving the logic to StringUtils. :^)
2020-03-22AK: Run clang-format on StringUtils.{cpp,h}Andreas Kling
2020-03-22LibJS: Use FlyString for identifiersAndreas Kling
This makes variable and property lookups a lot faster since comparing two FlyStrings is O(1).
2020-03-22AK: Add FlyString, a simple flyweight string classAndreas Kling
FlyString is a flyweight string class that wraps a RefPtr<StringImpl> known to be unique among the set of FlyStrings. The class is very unoptimized at the moment. When to use FlyString: - When you want O(1) string comparison - When you want to deduplicate a lot of identical strings When not to use FlyString: - For strings that don't need either of the above features - For strings that are likely to be unique
2020-03-22LibWeb: Put selection-related debug spam behind an #ifdefAndreas Kling
2020-03-22Kernel: Fix compilation error with ACPI_DEBUG enabledShannon Booth
2020-03-22LibCore: Wrap commented out debug messages in a preprocessor defineShannon Booth
We can also remove an outdated FIXME as dbg() does now support unsigned longs :^)
2020-03-22Kernel: Simplify process assertion checking if region is in rangeShannon Booth
Let's use the helper function for this :)
2020-03-22Kernel: Run clang-format on filesShannon Booth
Let's rip off the band-aid
2020-03-22Shell: More general tilde expansionShannon Booth
Now expanding a tilde isn't hardcoded to just work for `cd`. It is instead expanded while processing shell arguments. Autocompletion still doesn't work, but this is definitely an improvement over the last iteration.