Reland "[ia32,root] Disable root indirections in irregexp code"

This is a reland of fefd923048

Original change's description:
> [ia32,root] Disable root indirections in irregexp code
> 
> Irregexp code spills and restores ebx at boundaries, and clobbers it
> inbetween. Root-relative loads are disabled in this region.
> 
> Bug: v8:6666
> Change-Id: I9c68bc8ef88d324da609996a8457ac9e30a9b6fc
> Reviewed-on: https://chromium-review.googlesource.com/c/1280762
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#56639}

Bug: v8:6666
Change-Id: I92fe74e790ab9b2937a3b15db85bad45e6443083
Reviewed-on: https://chromium-review.googlesource.com/c/1280226
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#56666}
This commit is contained in:
Jakob Gruber 2018-10-16 08:47:36 +02:00 committed by Commit Bot
parent 4f02387570
commit 6aec5e7ad1

View File

@ -93,6 +93,9 @@ RegExpMacroAssemblerIA32::RegExpMacroAssemblerIA32(Isolate* isolate, Zone* zone,
success_label_(),
backtrack_label_(),
exit_label_() {
// Irregexp code clobbers ebx and spills/restores it at all boundaries.
masm_->set_root_array_available(false);
DCHECK_EQ(0, registers_to_save % 2);
__ jmp(&entry_label_); // We'll write the entry code later.
__ bind(&start_label_); // And then continue from here.