Linus Groh
97de93eed1
LibJS: Add js_negative_infinity()
...
Value(-js_infinity().as_double()) is kind of awkward.
2020-04-12 14:39:38 +02:00
Linus Groh
f226746394
LibJS: Handle Infinity in Value::to_number()
2020-04-12 14:39:38 +02:00
Andreas Kling
477bacddad
ProfileViewer: Symbolicate the disassembled instructions
...
Instead of "call 0x0811d6ac", we now say "call 0x0811d6ac <malloc>" :^)
2020-04-12 14:20:04 +02:00
Andreas Kling
e880e4c2d2
LibX86: Add a way for Instruction::to_string() to symbolicate addresses
...
This patch adds a pure virtual X86::SymbolProvider that can be passed
to Instruction::to_string(). If the instruction contains what appears
to be a program address, stringification will try to symbolicate that
address via the SymbolProvider.
This makes it possible (and very flexible) to add symbolication to
clients of the disassembler. :^)
2020-04-12 14:20:04 +02:00
Andreas Kling
5390d53a80
LibGUI: Remove debug spam in AbstractView::did_update_model()
2020-04-12 14:20:04 +02:00
Andreas Kling
8e4751a963
LibGUI: Add a way for models to update without invalidating indexes
...
This is really just a workaround to keep SystemMonitor's process table
working right wrt selection retention during resorts (while also doing
full index invalidation on things like ProfileViewer inversion.)
It's starting to feel like the model abstraction is not super great
and we'll need a better approach if we want to actually build some more
dynamic functionality into our views.
2020-04-12 12:03:33 +02:00
Andreas Kling
93f2a4edd3
Kernel: Bump the max stack frame count in sample profiles to 50
...
Maybe this should be configurable, who knows. For now, 50 works a bit
better for highly nested scenarios like LibJS.
2020-04-12 11:00:38 +02:00
Andreas Kling
ff33c5b286
LibJS: Let's show a few more decimals when stringifying numeric values
...
I'm not sure what the correct behavior is supposed to be, but at least
this makes printing numbers show some more interesting detail for now.
2020-04-12 10:59:29 +02:00
Andreas Kling
c596ef3c0e
ProfileViewer: Put the tree and disasembly views in a vertical splitter
2020-04-12 10:57:44 +02:00
Brendan Coles
2d699cd5da
LibWeb: Add port blacklist for ResourceLoader::load
...
`ResourceLoader::load` now rejects URLs which specify a `port`
associated with network services known to be vulnerable to
inter-protocol exploitation.
Fixes #1735
2020-04-12 10:33:35 +02:00
Linus Groh
c8d0a2eb3c
AK: Parse query and fragment in URL::parse()
2020-04-12 01:18:39 +02:00
Linus Groh
21a61b276b
AK: Support fragment in URL
2020-04-12 01:18:39 +02:00
Peter Nelson
eff27f39d5
Kernel: Store previous thread state upon all transitions to Stopped ( #1753 )
...
We now store the previous thread state in m_stop_state for all
transitions to the Stopped state via Thread::set_state.
Fixes #1752 whereupon resuming a thread that was stopped with SIGTSTP,
the previous state of the thread is not remembered correctly, resulting
in m_stop_state == State::Invalid and the associated assertion fails.
2020-04-11 23:39:46 +02:00
Andreas Kling
8aab8faf30
ProfileViewer: Open /boot/kernel for disassembly if possible
...
If you have access to /boot/kernel, you can see the disassembly of
kernel code in ProfileViewer. This is really useful! :^)
2020-04-11 23:37:11 +02:00
Andreas Kling
34d07e35bd
LibX86: Decode RDRAND instruction
...
I was looking at Kernel::get_good_random_bytes() and wondering where
the RDRAND instruction was. :^)
2020-04-11 23:37:00 +02:00
Andreas Kling
dccfff8c19
ProfileViewer: Don't crash when we can't disassemble something
2020-04-11 23:15:33 +02:00
Andreas Kling
8daddcfa0a
LibX86: Fix duplicate '+' in SIB byte disassembly
...
For SIB bytes with base but no index, we were emitting two '+' chars
which looked very off.
2020-04-11 23:11:10 +02:00
Andreas Kling
8ef9c272b6
Browser: Accept file:// URLs on the command line
...
This could be a lot nicer, but at least we can open file:// URLs now.
2020-04-11 23:11:10 +02:00
Andreas Kling
b1555381ee
AK: Recompute URL validity after changing protocol/host/path
...
This allows you to build URLs by calling setters on an empty URL and
actually get a valid URL at the end.
2020-04-11 23:11:10 +02:00
Andrew Kaster
827e375297
LibELF: Validate the mapped file in DynamicLoader constructor
...
ELF::DynamicLoader now validates the ELF header and the program headers
in its constructor. The requested program interpreter from the
PT_INTERP program header is now avaiable via a getter. The dynamic
loader program will want to check that this matches its name, for extra
shenanigans checking.
2020-04-11 22:41:05 +02:00
Andrew Kaster
61acca223f
LibELF: Move validation methods to their own file
...
These validate_elf_* methods really had no business being static
methods of ELF::Image. Now that the ELF namespace exists, it makes
sense to just move them to be free functions in the namespace.
2020-04-11 22:41:05 +02:00
Andrew Kaster
21b5909dc6
LibELF: Move ELF classes into namespace ELF
...
This is for consistency with other namespace changes that were made
a while back to the other libraries :)
2020-04-11 22:41:05 +02:00
Brendan Coles
6b0f47683c
LibWeb: Prevent http:// URLs loading scripts sourced from file:// URLs
...
Fixes #1616
2020-04-11 21:10:50 +02:00
Andreas Kling
17b8857dc0
LibVT: Shift+Tab should generate ESC[Z
...
Fixes #1751 .
2020-04-11 21:09:47 +02:00
Andreas Kling
8dd96ad143
ProfileViewer: Color code the instruction rows by sample percentage
...
We now "heat color" the instruction-level samples so you can get a nice
visual picture of where time is spent in functions. :^)
2020-04-11 21:04:45 +02:00
Andreas Kling
a4006e19d7
ProfileViewer: Don't skip the innermost frame when loading profiles
...
We were skipping the innermost frame as a workaround for the kernel
putting garbage data there. Now that the kernel puts the instruction
poiner there, we can load the frame normally! :^)
2020-04-11 21:04:45 +02:00
Andreas Kling
b7ff3b5ad1
Kernel: Include the current instruction pointer in profile samples
...
We were missing the innermost instruction pointer when sampling.
This makes the instruction-level profile info a lot cooler! :^)
2020-04-11 21:04:45 +02:00
Linus Groh
c106451daf
LibLine: Cycle backward through suggestions using Shift+Tab
2020-04-11 20:42:17 +02:00
Andrew Kaster
f809231718
LibELF: Return false instead of assert on unrecognized program header
2020-04-11 19:32:28 +02:00
Andreas Kling
c199b0e1aa
LibGUI: Fill whole TableView cells with custom background color
...
This was easier than I expected. :^)
2020-04-11 19:20:40 +02:00
Andreas Kling
2b7220b093
ProfileViewer: Remove debug spam during disassembly
2020-04-11 18:58:17 +02:00
Andreas Kling
68ddbc0084
ProfileViewer: Highlight instructions with >0 samples in yellow
2020-04-11 18:56:50 +02:00
Andreas Kling
3a65e9107e
LibGUI: Respect Model::Role::BackgroundColor
...
This implementation is very gappy, but the basic feature allows us to
highlight cells with a custom background color.
2020-04-11 18:56:15 +02:00
Andreas Kling
69583f07e0
ProfileViewer: Add an instruction-level sample viewer
...
When you select a function in the profile tree, we will now display
a per-instruction breakdown of aggregated samples in that function.
This allows us to look much closer at what our code is doing! :^)
2020-04-11 18:46:11 +02:00
Andreas Kling
5b91d848a7
LibELF: Add a find_symbol() API that finds a Symbol for an address
...
Also add ELFImage::Symbol::raw_data() to get a StringView containing
the entire symbol contents.
2020-04-11 18:45:17 +02:00
Linus Groh
31d0dbe2a0
js: Stylize TokenType::{Throw,Switch,Case}
2020-04-11 17:15:40 +02:00
AnotherTest
2fdce695d6
LibLine: Display suggestions and cycle between them
...
With extra color (tm)
This commit also patches the users of LibLine to properly use the new
API
2020-04-11 17:15:19 +02:00
AnotherTest
b59a391a78
LibLine: Ask for cursor position once and handle the rest internally
...
Prior to this, writing to stdin while a display refresh was happening
corrupted the input and displayed garbage.
2020-04-11 17:15:19 +02:00
Andreas Kling
c993c7e3dc
AK: String::contains() should say no if needle or haystack is null
2020-04-11 14:33:05 +02:00
AnotherTest
70da0e3fb5
Userland: Add primitive autocomplete to the JS repl
...
This patch adds primitive support for autocompletion in the JS repl,
it only supports completing global names and properties on variables :^)
2020-04-11 14:29:25 +02:00
AnotherTest
586aa3b1de
Userland: Install LibLine's signal handlers in the JS repl
2020-04-11 14:29:25 +02:00
AnotherTest
f946d6ce79
LibLine: Properly handle window resize by not spamming DSRs
...
We have all the information necessary to find our new origin when a
window size change occurs.
2020-04-11 14:29:25 +02:00
AnotherTest
173c65660a
LibLine: Properly show and cleanup suggestions
...
Prior to this, we would display them and never clean then up.
2020-04-11 14:29:25 +02:00
Brendan Coles
502299919a
IRCClient: Add channel member context menus for common CTCP requests
...
Add menu items for CTCP: USERINFO, FINGER, TIME, VERSION, CLIENTINFO
2020-04-11 14:26:36 +02:00
Linus Groh
3b21c4aa56
LibJS: Add console.trace()
2020-04-11 14:10:42 +02:00
Linus Groh
eece424694
LibJS: Make Function and CallFrame aware of their function name
2020-04-11 14:10:42 +02:00
Andreas Kling
4eceea7c62
LibX86: When there are multiple REPZ/REPNZ prefixes, the last one wins
2020-04-11 14:05:10 +02:00
Andreas Kling
1924112d7d
LibX86: Tolerate invalid segment register indices when disassembling
...
While #6 and #7 are not valid segment register, they can still be
encoded in otherwise-valid instructions, so let's tolerate it.
2020-04-11 14:00:20 +02:00
Andreas Kling
d7d7a32d47
LibX86: Disassemble unknown opcodes as "db %#02x"
2020-04-11 13:57:28 +02:00
Andreas Kling
95df0847c5
LibX86: Decode PADDB, PADDW and PADDD
2020-04-11 13:57:20 +02:00