Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
IainIreland
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
8 ms
·
31.
▲
by
IainIreland
3y ago
It's hard to predict statically which branches will be dynamically unpredictable. A seasoned hardware architect once told me that Intel went all-in on predication for Itanium, under the assumption that a Sufficiently Smart Compiler cou
32.
▲
by
IainIreland
3y ago
As I understand it, V8 keeps track of an ElementsKind for each array (or, more precisely, for the elements of every object; arrays are not special in this sense). If an array only contains floats, then they will all be stored unboxed and in
33.
▲
by
IainIreland
3y ago
We do streaming baseline compilation as fast as the network can hand us bytes, but we also kick off a more optimized compilation in a background thread. A lot of optimizations can be baked into the generated wasm, but you still need to spen
34.
▲
by
IainIreland
3y ago
Generally we say "real users" internally as a comparison to benchmarks, as in "this improves JetStream by 5%, but I don't think it will make any difference to real users".
35.
▲
by
IainIreland
3y ago
JSOP_SUNSPIDER was apparently a running joke back in the day inside SM.
36.
▲
by
IainIreland
3y ago
To be clear, Firefox doesn't care about this benchmark either. It just so happens that changes we made for Speedometer also improved our performance here, which is a fun coincidence but not important in the grand scheme of things. (Spe
37.
▲
by
IainIreland
3y ago
Yeah, I've been making this argument for years too. Speedometer 3 is in the works, and it's moving in this direction. On multiple occasions we've done performance analysis of the latest draft version, noticed a particular chu
38.
▲
by
IainIreland
3y ago
It's possible. We have plans to do so. There are a bunch of finicky corner cases, though. For example, destructuring will call the `return` method of the iterator when it's done ( https://developer.mozilla.org/en-US
39.
▲
by
IainIreland
3y ago
To be clear: we track it in the sense that we still have it running as part of old dashboards. It's cheap, and every so often it catches an unintended regression. The SpiderMonkey team is very much on board with ignoring microbenchmark
40.
▲
by
IainIreland
3y ago
In general, there's no difference between the stack of the C++ program and the stack of the JS program. When SpiderMonkey just-in-time compiles a JS function, the result is native code that creates a stack frame on the same stack as th
41.
▲
by
IainIreland
3y ago
I wrote that comment. One other possibility: if you use spread syntax to call a function with a large array (eg `foo(...Array(20000))`), then all those arguments will be pushed on the stack. (I didn't dig into the specifics of the Goog
42.
▲
by
IainIreland
4y ago
Eh. I worked on IBM's COBOL compiler for four years or so, and I think you're overselling COBOL. COBOL is the best language for extending the functionality of critical legacy systems already written in COBOL. I have a soft spot fo
43.
▲
by
IainIreland
4y ago
By your definition, webassembly doesn't use a JIT, because it doesn't use any runtime information. In practice, the JIT/AOT distinction boils down to whether compilation time counts as part of execution time, or not. If cycle
44.
▲
by
IainIreland
5y ago
A possible non-Rust example: SpiderMonkey uses a trick we call NaN-boxing to represent JS values, which takes advantage of the fact that doubles have 2^52 different bit patterns for NaN to store 48-bit pointers with 4 bits leftover for a ty
45.
▲
by
IainIreland
5y ago
As a Canadian: this response should not be downvoted. It is correct and important. The War Measures Act used during the October Crisis was a different law; the Emergencies Act, which was just invoked, was passed as a response to concerns ab
46.
▲
by
IainIreland
5y ago
It may have changed since I left, but my understanding as of a few years ago was that IBM was replacing the front-end with Clang but continuing to use TPO (at least for now).
47.
▲
by
IainIreland
5y ago
> Then pwn2own decided not to include Firefox in another year hacks because Firefox made no improvements at all in previous 2 years. Uh, [citation needed]? Firefox was a valid target in Pwn2Own 2021: https://www.zerodayinitiat
48.
▲
by
IainIreland
5y ago
I spent ~5 years working on a COBOL compiler. In practice, production COBOL compilers pick and choose which parts of the standard they choose to implement based on customer demand, and there's not a lot of demand for most of the new st
49.
▲
by
IainIreland
5y ago
There's no magic answer here. We track various metrics (page load time, responsiveness, gc pause time, and so on) in telemetry. (You can poke around at telemetry.mozilla.org.) We have some page load benchmarks that load a recorded copy
50.
▲
by
IainIreland
5y ago
> Has there been any consideration to create AI to work around pathological cases in tracing? None of which I'm aware. > If compiling is done on a secondary thread, aren't you then reaping all the benefits of JIT optimizatio
51.
▲
by
IainIreland
5y ago
SpiderMonkey caches pre-parsed bytecode for scripts, which can immediately start executing in the interpreter. (I believe roughly the same is true for other engines. See [1], for example.) The tricky part of caching compiled scripts is that
52.
▲
by
IainIreland
5y ago
Eh, with the benefit of 14 years of hindsight, I want to push back on some of the things in that talk. (Context: I work on SpiderMonkey.) First, all the stuff about tracing and trace trees is kind of obsolete. SpiderMonkey abandoned TraceMo
53.
▲
by
IainIreland
5y ago
The correct answer was not provided as a multiple choice option, which means by definition that 0% of test takers selected it.
54.
▲
by
IainIreland
5y ago
In fact, it already happened to this proposal, which started life as `Array.prototype.item` before it turned out that some libraries were using the presence of a `.item` property to duck-type DOM collections: https://github.com&#
55.
▲
by
IainIreland
5y ago
Roughly speaking, '?' means that the operation might throw an exception, which should be propagated if thrown, and '!' means that the operation should never fail. (In Rust terms, '? ToObject(this value)" ->
56.
▲
by
IainIreland
5y ago
As an educated guess: Sparkplug is very similar in design to SpiderMonkey's baseline compiler. I ran a quick test a few weeks ago to see what the performance delta was between SM's baseline compiler and baseline interpreter, and g
57.
▲
by
IainIreland
5y ago
In the document here[1], there's a picture of Gandalf the White at the bottom with the caption "Sparkplug: I am FullCodeGen. Or rather, FullCodeGen, as it should have been". [1]: https://docs.google.com/documen
58.
▲
by
IainIreland
5y ago
For the record, I suspect "Manis Heath" is in fact "ManishEarth", aka Manish Goregaokar.
59.
▲
by
IainIreland
5y ago
The logo! This isn't a major change; we're just polishing up our outwards-facing information a bit.
60.
▲
by
IainIreland
5y ago
The announcement is here: https://support.mozilla.org/en-US/kb/what-happened-firefox-s... Quick summary: it was being used for malware and phishing, aggravated by the trustworthy-seeming firefox.com URL.
More ›