e1dbe835d7
The way to determine whether a MaybeObject is a strong or weak reference to the heap object is to check its lowest two bits. However, if the MaybeObject is known to not be a smi, that is, the lowest bit is known to be 1, we can check one bit instead. This allows Turbofan to select better instructions: x64: Before: movl r9,r11 andl r9,0x3 cmpb r9l,0x1 After: testb r11,0x2 arm64: Before: and w8, w7, #0x3 cmp w8, #0x1 (1) b.ne #+0x320 After: tbnz w7, #1, #+0x320 Change-Id: I03623183406ad7d920c96a752651e0116a22832e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3861310 Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Hao A Xu <hao.a.xu@intel.com> Reviewed-by: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#83153} |
||
---|---|---|
.. | ||
cppgc | ||
libplatform | ||
APIDesign.md | ||
DEPS | ||
DIR_METADATA | ||
js_protocol-1.2.json | ||
js_protocol-1.3.json | ||
js_protocol.pdl | ||
OWNERS | ||
v8-array-buffer.h | ||
v8-callbacks.h | ||
v8-container.h | ||
v8-context.h | ||
v8-cppgc.h | ||
v8-data.h | ||
v8-date.h | ||
v8-debug.h | ||
v8-embedder-heap.h | ||
v8-embedder-state-scope.h | ||
v8-exception.h | ||
v8-extension.h | ||
v8-external.h | ||
v8-fast-api-calls.h | ||
v8-forward.h | ||
v8-function-callback.h | ||
v8-function.h | ||
v8-initialization.h | ||
v8-inspector-protocol.h | ||
v8-inspector.h | ||
v8-internal.h | ||
v8-isolate.h | ||
v8-json.h | ||
v8-local-handle.h | ||
v8-locker.h | ||
v8-maybe.h | ||
v8-memory-span.h | ||
v8-message.h | ||
v8-metrics.h | ||
v8-microtask-queue.h | ||
v8-microtask.h | ||
v8-object.h | ||
v8-persistent-handle.h | ||
v8-platform.h | ||
v8-primitive-object.h | ||
v8-primitive.h | ||
v8-profiler.h | ||
v8-promise.h | ||
v8-proxy.h | ||
v8-regexp.h | ||
v8-script.h | ||
v8-snapshot.h | ||
v8-statistics.h | ||
v8-template.h | ||
v8-traced-handle.h | ||
v8-typed-array.h | ||
v8-unwinder-state.h | ||
v8-unwinder.h | ||
v8-util.h | ||
v8-value-serializer-version.h | ||
v8-value-serializer.h | ||
v8-value.h | ||
v8-version-string.h | ||
v8-version.h | ||
v8-wasm-trap-handler-posix.h | ||
v8-wasm-trap-handler-win.h | ||
v8-wasm.h | ||
v8-weak-callback-info.h | ||
v8.h | ||
v8config.h |