v8 Sandboxes, isolates - powers many edge worker models like those at Cloudflare, Fastly, and even entire node.js ecosystem
Project zero - see recent posts of securing non-google software, including past reports about iPhone bugs.
I just can't understand the hate they get in other fronts.
One recent Google achievement that it is not talked about that much, Google Maps, Google offered it for free, killed all the other companies that offered similar services for money and now Google maps is also paid. Some people don't like when giants use their profits from a market to offer free stuff in other markets and kill good paid or free products.
There weren't really similar services when it launched and there were far more mapping services/APIs both before and after the rate hike, so...
The real problem is people based businesses on the rates offered and then they were drastically increased. The maps market is doing fine.
MapQuest didn't have a mapping API until later, and was notably owned by AOL and offered as a free product for five years by that point. They're also still a company, having not been killed, despite MapQuest's best efforts to destroy their own wildly popular product through neglect.
About the actual method of pricing though, one needs to compare to the likes of Oracle - where they charge based on CPU cores that you are using (where it is entirely based on how much can they extract out of a company). Or let us take the case of your favorite TV/Phone company wanting more $$ for an extra extension in your house. In those days, I would have never imaged that Netflix or Youtube additional "profiles" would be free.
Some departments of it do wonderful, stellar work and give it away as open source. Other parts do so-so work. Yet other parts do something which is seen by many as nefarious. You can often see the whole spectrum represented in one major product, such as Chrome or Android.
This is why seeing entire Google (or FB, or MS, or even Oracle) as uniformly "good" or "evil" is a dangerous simplification. OTOH knowing their corporate policies from prior experience, one can presume how "good" or "evil" an outcome is more probable in some new, unknown case. Known cases, such as V8, can completely contradict the common perception.
It's easy to understand. Great technical work and products don't bestow sainthood.
It's not incongruous to belive both: 1. Google is doing important and valuable work, 2. Google is doing other things that are bad and they should stop.
The whole idea that you can simply label some entity (human, company, anything) as "purely good" or "purely evil" is wrong and dangerous. You must qualify the scope of good and bad, and discriminate between which behaviors fall into each category. This is the major failure in the idea of cancel culture.
Other fronts are other fronts than the good works you listed.
You're not supposed to buy goodwill.
Now that's a new word I haven't heard before. Is this supposed to mean something different from "polymorphic"?
As I understand it "megamorphic" just means the point where the JIT gives up on specializing for each type. So you'd have e.g.
Monomorphic - JIT emits code specialized for one type.
Bimorphic - JIT emits two specialized versions of the code, with a branch in front that checks the type.
Megamorphic - JIT emits polymorphic code that will work with any type. Prevents inlining and many optimizations.
This comes up when optimizing Java code, since the JVM only specializes call sites that are monomorphic or bimorphic.
If you're implementing a set class you might want to have specialized subclasses for, say, empty sets or one-element sets, so you can implement certain methods more efficiently - e.g. the intersection of an empty set is always an empty set. So you add the classes MySet, MyEmptySet and MyOneElementSet. But now your code runs slower than it did with just MySet, because your method call sites are Trimorphic and can't be inlined anymore.
This seems like a good explanation as well: https://mrale.ph/blog/2015/01/11/whats-up-with-monomorphism.... and says that V8 will optimize for up to 4 different types before going megamorphic.
In the example in TFA, m() will be called with 5 different classes (createMixin(Base), createMixin(createMixin(Base))...) so V8 will generate megamorphic code instead of specializing.