Pular para o conteúdo principal

26 postagens marcadas com "internals"

Ver todas os Marcadores

Turboalimentando o V8 com números de heap mutáveis

· Leitura de 6 minutos
[Victor Gomes](https://twitter.com/VictorBFG), o deslocador de bits

No V8, estamos constantemente buscando melhorar o desempenho do JavaScript. Como parte desse esforço, recentemente revisamos o conjunto de benchmarks JetStream2 para eliminar gargalos de desempenho. Este post detalha uma otimização específica que realizamos e que resultou em uma melhoria significativa de 2.5x no benchmark async-fs, contribuindo para um aumento perceptível na pontuação geral. A otimização foi inspirada pelo benchmark, mas padrões como esses aparecem em código do mundo real.

Compressão de ponteiros em Oilpan

· Leitura de 15 minutos
Anton Bikineev, e Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), analisadores de desmontagem em ação

É absolutamente idiota ter ponteiros de 64 bits quando eu compilo um programa que utiliza menos de 4 gigabytes de RAM. Quando esses valores de ponteiros aparecem dentro de uma estrutura, eles não apenas desperdiçam metade da memória, mas também efetivamente descartam metade do cache.

Donald Knuth (2008)

Adaptando a segurança temporal da memória no C++

· Leitura de 12 minutos
Anton Bikineev, Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), Hannes Payer ([@PayerHannes](https://twitter.com/PayerHannes))
nota

Nota: Esta publicação foi originalmente publicada no Google Security Blog.

Segurança da memória no Chrome é um esforço contínuo para proteger nossos usuários. Estamos constantemente experimentando diferentes tecnologias para nos manter à frente de agentes maliciosos. Sob esse espírito, esta publicação fala sobre nossa jornada no uso de tecnologias de varredura de heap para melhorar a segurança de memória no C++.

Inicialização mais rápida de instâncias com novos recursos de classe

· Leitura de 13 minutos
[Joyee Cheung](https://twitter.com/JoyeeCheung), inicializador de instâncias

Os campos de classe foram introduzidos no V8 desde a versão v7.2 e os métodos privados de classe foram incluídos desde a versão v8.4. Após as propostas alcançarem o estágio 4 em 2021, começou o trabalho de aprimorar o suporte aos novos recursos de classe no V8 - até então, havia dois principais problemas que impactavam sua adoção:

Biblioteca Oilpan

· Leitura de 7 minutos
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)) e Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), eficientes e eficazes na movimentação de arquivos

Embora o título deste post possa sugerir uma imersão em uma coleção de livros sobre cárteres de óleo - o que, considerando as normas de construção para cárteres, é um tema com uma quantidade surpreendente de literatura - nós, em vez disso, iremos olhar mais de perto para o Oilpan, um coletor de lixo C++ que é oferecido por meio do V8 como uma biblioteca desde a versão V8 v9.4.

Chamadas JavaScript mais rápidas

· Leitura de 20 minutos
[Victor Gomes](https://twitter.com/VictorBFG), o destruidor de quadros

JavaScript permite chamar uma função com um número diferente de argumentos do que o número esperado de parâmetros, ou seja, pode-se passar menos ou mais argumentos do que os parâmetros formais declarados. O primeiro caso é chamado de subaplicação e o segundo de sobreaplicação.

Rastreamento de slack no V8

· Leitura de 19 minutos
Michael Stanton ([@alpencoder](https://twitter.com/alpencoder)), renomado mestre do *slack*

O rastreamento de slack é uma forma de dar aos novos objetos um tamanho inicial que é maior do que eles podem realmente usar, para que possam ter novas propriedades adicionadas rapidamente. E então, após algum período de tempo, magicamente devolver esse espaço não utilizado ao sistema. Legal, né?

Coleta de lixo de alto desempenho para C++

· Leitura de 11 minutos
Anton Bikineev, Omer Katz ([@omerktz](https://twitter.com/omerktz)), e Michael Lippautz ([@mlippautz](https://twitter.com/mlippautz)), especialistas em memória C++

No passado, já falamos muito sobre coleta de lixo para JavaScript, o modelo de objetos de documentos (DOM) e como tudo isso é implementado e otimizado no V8. No entanto, nem tudo no Chromium é JavaScript, já que a maior parte do navegador e de seu mecanismo de renderização Blink, onde o V8 está embutido, são escritos em C++. O JavaScript pode ser usado para interagir com o DOM, que é então processado pelo pipeline de renderização.

Melhorando expressões regulares no V8

· Leitura de 7 minutos
Patrick Thier e Ana Peško, expressadores regulares de opiniões sobre expressões regulares

Na configuração padrão, o V8 compila expressões regulares para código nativo na primeira execução. Como parte do nosso trabalho no V8 sem JIT, introduzimos um interpretador para expressões regulares. Interpretar expressões regulares tem a vantagem de usar menos memória, mas vem com uma penalidade de desempenho. Neste post de blog, descrevemos como aproveitamos as vantagens de interpretar expressões regulares enquanto mitigamos as desvantagens.

Parsing extremamente rápido, parte 2: análise preguiçosa

· Leitura de 16 minutos
Toon Verwaest ([@tverwaes](https://twitter.com/tverwaes)) e Marja Hölttä ([@marjakh](https://twitter.com/marjakh)), analisadores mais esparsos

Esta é a segunda parte da nossa série explicando como o V8 analisa JavaScript da forma mais rápida possível. A primeira parte explicou como tornamos o scanner do V8 rápido.

Analisar é a etapa em que o código-fonte é transformado em uma representação intermediária para ser consumida por um compilador (no V8, o compilador de bytecode Ignition). A análise e a compilação ocorrem no caminho crítico do início de uma página da web, e nem todas as funções enviadas ao navegador são necessárias imediatamente durante o início. Embora os desenvolvedores possam atrasar esse código com scripts assíncronos e adiados, isso nem sempre é viável. Além disso, muitas páginas da web enviam códigos que só são usados por certos recursos que podem não ser acessados por um usuário durante qualquer execução específica da página.