@@ -415,25 +415,24 @@ void TurboAssembler::CallEphemeronKeyBarrier(Register object, Register address,
415415void TurboAssembler::CallRecordWriteStub (
416416 Register object, Register address,
417417 RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode) {
418- CallRecordWriteStub (
419- object, address, remembered_set_action, fp_mode,
420- isolate ()->builtins ()->builtin_handle (Builtins::kRecordWrite ),
421- kNullAddress );
418+ CallRecordWriteStub (object, address, remembered_set_action, fp_mode,
419+ Builtins::kRecordWrite , kNullAddress );
422420}
423421
424422void TurboAssembler::CallRecordWriteStub (
425423 Register object, Register address,
426424 RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode,
427425 Address wasm_target) {
428426 CallRecordWriteStub (object, address, remembered_set_action, fp_mode,
429- Handle<Code>:: null () , wasm_target);
427+ Builtins:: kNoBuiltinId , wasm_target);
430428}
431429
432430void TurboAssembler::CallRecordWriteStub (
433431 Register object, Register address,
434432 RememberedSetAction remembered_set_action, SaveFPRegsMode fp_mode,
435- Handle<Code> code_target, Address wasm_target) {
436- DCHECK_NE (code_target.is_null (), wasm_target == kNullAddress );
433+ int builtin_index, Address wasm_target) {
434+ DCHECK_NE (builtin_index == Builtins::kNoBuiltinId ,
435+ wasm_target == kNullAddress );
437436 // TODO(albertnetymk): For now we ignore remembered_set_action and fp_mode,
438437 // i.e. always emit remember set and save FP registers in RecordWriteStub. If
439438 // large performance regression is observed, we should use these values to
@@ -461,10 +460,14 @@ void TurboAssembler::CallRecordWriteStub(
461460
462461 Move (remembered_set_parameter, Smi::FromEnum (remembered_set_action));
463462 Move (fp_mode_parameter, Smi::FromEnum (fp_mode));
464- if (code_target. is_null () ) {
463+ if (builtin_index == Builtins:: kNoBuiltinId ) {
465464 // Use {wasm_call} for direct Wasm call within a module.
466465 wasm_call (wasm_target, RelocInfo::WASM_STUB_CALL);
466+ } else if (options ().inline_offheap_trampolines ) {
467+ CallBuiltin (builtin_index);
467468 } else {
469+ Handle<Code> code_target =
470+ isolate ()->builtins ()->builtin_handle (Builtins::kRecordWrite );
468471 Call (code_target, RelocInfo::CODE_TARGET);
469472 }
470473
0 commit comments