diff options
author | Myles Borins <mylesborins@google.com> | 2019-09-24 11:56:38 -0400 |
---|---|---|
committer | Myles Borins <myles.borins@gmail.com> | 2019-10-07 03:19:23 -0400 |
commit | f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2 (patch) | |
tree | f5edbccb3ffda2573d70a6e291e7157f290e0ae0 /deps/v8/src/codegen/ia32/macro-assembler-ia32.cc | |
parent | ffd22e81983056d09c064c59343a0e488236272d (diff) | |
download | android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.gz android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.tar.bz2 android-node-v8-f7f6c928c1c9c136b7926f892b8a2fda11d8b4b2.zip |
deps: update V8 to 7.8.279.9
PR-URL: https://github.com/nodejs/node/pull/29694
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Diffstat (limited to 'deps/v8/src/codegen/ia32/macro-assembler-ia32.cc')
-rw-r--r-- | deps/v8/src/codegen/ia32/macro-assembler-ia32.cc | 55 |
1 files changed, 29 insertions, 26 deletions
diff --git a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc index f6f0153e54..070f315977 100644 --- a/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc +++ b/deps/v8/src/codegen/ia32/macro-assembler-ia32.cc @@ -91,26 +91,16 @@ void TurboAssembler::CompareRoot(Register with, RootIndex index) { } } -void TurboAssembler::CompareStackLimit(Register with) { - if (root_array_available()) { - CompareRoot(with, RootIndex::kStackLimit); - } else { - DCHECK(!options().isolate_independent_code); - ExternalReference ref = - ExternalReference::address_of_stack_limit(isolate()); - cmp(with, Operand(ref.address(), RelocInfo::EXTERNAL_REFERENCE)); - } -} - void TurboAssembler::CompareRealStackLimit(Register with) { - if (root_array_available()) { - CompareRoot(with, RootIndex::kRealStackLimit); - } else { - DCHECK(!options().isolate_independent_code); - ExternalReference ref = - ExternalReference::address_of_real_stack_limit(isolate()); - cmp(with, Operand(ref.address(), RelocInfo::EXTERNAL_REFERENCE)); - } + CHECK(root_array_available()); // Only used by builtins. + + // Address through the root register. No load is needed. + ExternalReference limit = + ExternalReference::address_of_real_jslimit(isolate()); + DCHECK(IsAddressableThroughRootRegister(isolate(), limit)); + + intptr_t offset = RootRegisterOffsetForExternalReference(isolate(), limit); + cmp(with, Operand(kRootRegister, offset)); } void MacroAssembler::PushRoot(RootIndex index) { @@ -465,8 +455,9 @@ void MacroAssembler::RecordWrite(Register object, Register address, DCHECK(value != address); AssertNotSmi(object); - if (remembered_set_action == OMIT_REMEMBERED_SET && - !FLAG_incremental_marking) { + if ((remembered_set_action == OMIT_REMEMBERED_SET && + !FLAG_incremental_marking) || + FLAG_disable_write_barriers) { return; } @@ -1875,11 +1866,7 @@ void TurboAssembler::Call(Handle<Code> code_object, RelocInfo::Mode rmode) { if (isolate()->builtins()->IsBuiltinHandle(code_object, &builtin_index) && Builtins::IsIsolateIndependent(builtin_index)) { // Inline the trampoline. - RecordCommentForOffHeapTrampoline(builtin_index); - CHECK_NE(builtin_index, Builtins::kNoBuiltinId); - EmbeddedData d = EmbeddedData::FromBlob(); - Address entry = d.InstructionStartOfBuiltin(builtin_index); - call(entry, RelocInfo::OFF_HEAP_TARGET); + CallBuiltin(builtin_index); return; } } @@ -1907,6 +1894,16 @@ void TurboAssembler::CallBuiltinByIndex(Register builtin_index) { call(builtin_index); } +void TurboAssembler::CallBuiltin(int builtin_index) { + DCHECK(Builtins::IsBuiltinId(builtin_index)); + DCHECK(FLAG_embedded_builtins); + RecordCommentForOffHeapTrampoline(builtin_index); + CHECK_NE(builtin_index, Builtins::kNoBuiltinId); + EmbeddedData d = EmbeddedData::FromBlob(); + Address entry = d.InstructionStartOfBuiltin(builtin_index); + call(entry, RelocInfo::OFF_HEAP_TARGET); +} + void TurboAssembler::LoadCodeObjectEntry(Register destination, Register code_object) { // Code objects are called differently depending on whether we are generating @@ -1960,6 +1957,12 @@ void TurboAssembler::JumpCodeObject(Register code_object) { jmp(code_object); } +void TurboAssembler::Jump(const ExternalReference& reference) { + DCHECK(root_array_available()); + jmp(Operand(kRootRegister, RootRegisterOffsetForExternalReferenceTableEntry( + isolate(), reference))); +} + void TurboAssembler::Jump(Handle<Code> code_object, RelocInfo::Mode rmode) { DCHECK_IMPLIES(options().isolate_independent_code, Builtins::IsIsolateIndependentBuiltin(*code_object)); |