@@ -9254,20 +9254,6 @@ IGNORE_CLANG_WARNINGS_END
92549254 m_out.int64Zero,
92559255 m_heaps.typedArrayProperties);
92569256
9257- #if CPU(ARM64E)
9258- {
9259- PatchpointValue* authenticate = m_out.patchpoint(pointerType());
9260- authenticate->appendSomeRegister(storage);
9261- authenticate->append(size64Bits, B3::ValueRep(B3::ValueRep::SomeLateRegister));
9262- authenticate->setGenerator([=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
9263- jit.move(params[1].gpr(), params[0].gpr());
9264- jit.zeroExtend48ToWord(params[2].gpr(), params[2].gpr()); // See rdar://107561209, rdar://107724053.
9265- jit.tagArrayPtr(params[2].gpr(), params[0].gpr());
9266- });
9267- storage = authenticate;
9268- }
9269- #endif
9270-
92719257 ValueFromBlock haveStorage = m_out.anchor(storage);
92729258
92739259 LValue fastResultValue = nullptr;
@@ -12532,7 +12518,7 @@ IGNORE_CLANG_WARNINGS_END
1253212518 else
1253312519 jit.loadPtr(CCallHelpers::Address(GPRInfo::wasmContextInstancePointer, Wasm::Instance::offsetOfCachedMemory()), GPRInfo::wasmBaseMemoryPointer);
1253412520 }
12535- jit.cageConditionallyAndUntag (Gigacage::Primitive, GPRInfo::wasmBaseMemoryPointer, GPRInfo::wasmBoundsCheckingSizeRegister, scratchGPR, /* validateAuth */ true, /* mayBeNull */ false );
12521+ jit.cageConditionally (Gigacage::Primitive, GPRInfo::wasmBaseMemoryPointer, GPRInfo::wasmBoundsCheckingSizeRegister, scratchGPR);
1253612522 }
1253712523 }
1253812524
@@ -19431,66 +19417,17 @@ IGNORE_CLANG_WARNINGS_END
1943119417 }
1943219418 }
1943319419
19434- LValue untagArrayPtr(LValue ptr, LValue size)
19435- {
19436- #if CPU(ARM64E)
19437- PatchpointValue* authenticate = m_out.patchpoint(pointerType());
19438- authenticate->appendSomeRegister(ptr);
19439- authenticate->append(size, B3::ValueRep(B3::ValueRep::SomeLateRegister));
19440- authenticate->numGPScratchRegisters = 1;
19441- authenticate->setGenerator([=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
19442- jit.move(params[1].gpr(), params[0].gpr());
19443- jit.untagArrayPtr(params[2].gpr(), params[0].gpr(), true, params.gpScratch(0));
19444- });
19445- return authenticate;
19446- #else
19447- UNUSED_PARAM(size);
19448- return ptr;
19449- #endif
19450- }
19451-
19452- LValue removeArrayPtrTag(LValue ptr)
19453- {
19454- #if CPU(ARM64E)
19455- PatchpointValue* authenticate = m_out.patchpoint(pointerType());
19456- authenticate->appendSomeRegister(ptr);
19457- authenticate->setGenerator([=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
19458- jit.move(params[1].gpr(), params[0].gpr());
19459- jit.removeArrayPtrTag(params[0].gpr());
19460- });
19461- return authenticate;
19462- #endif
19463- return ptr;
19464- }
19465-
1946619420 LValue caged(Gigacage::Kind kind, LValue ptr, LValue base)
1946719421 {
19468- auto doUntagArrayPtr = [&](LValue taggedPtr) {
19469- #if CPU(ARM64E)
19470- if (kind == Gigacage::Primitive) {
19471- #if USE(LARGE_TYPED_ARRAYS)
19472- LValue size = m_out.load64(base, m_heaps.JSArrayBufferView_length);
19473- #else
19474- LValue size = m_out.load32(base, m_heaps.JSArrayBufferView_length);
19475- #endif
19476- return untagArrayPtr(taggedPtr, size);
19477- }
19478- return ptr;
19479- #else
19480- UNUSED_PARAM(taggedPtr);
19481- return ptr;
19482- #endif
19483- };
19484-
1948519422#if GIGACAGE_ENABLED
1948619423 if (!Gigacage::isEnabled(kind))
19487- return doUntagArrayPtr( ptr) ;
19424+ return ptr;
1948819425
1948919426 if (kind == Gigacage::Primitive && !Gigacage::disablingPrimitiveGigacageIsForbidden()) {
1949019427 if (vm().primitiveGigacageEnabled().isStillValid())
1949119428 m_graph.watchpoints().addLazily(vm().primitiveGigacageEnabled());
1949219429 else
19493- return doUntagArrayPtr( ptr) ;
19430+ return ptr;
1949419431 }
1949519432
1949619433 LValue basePtr = m_out.constIntPtr(Gigacage::basePtr(kind));
@@ -19514,7 +19451,7 @@ IGNORE_CLANG_WARNINGS_END
1951419451 jit.insertBitField64(params[1].gpr(), CCallHelpers::TrustedImm32(0), CCallHelpers::TrustedImm32(64 - MacroAssembler::maxNumberOfAllowedPACBits), params[0].gpr());
1951519452 });
1951619453
19517- result = doUntagArrayPtr( merge) ;
19454+ result = merge;
1951819455 }
1951919456#endif // CPU(ARM64E)
1952019457
@@ -19534,7 +19471,7 @@ IGNORE_CLANG_WARNINGS_END
1953419471
1953519472 UNUSED_PARAM(kind);
1953619473 UNUSED_PARAM(base);
19537- return doUntagArrayPtr( ptr) ;
19474+ return ptr;
1953819475 }
1953919476
1954019477 void buildSwitch(SwitchData* data, LType type, LValue switchValue)
@@ -22277,7 +22214,6 @@ IGNORE_CLANG_WARNINGS_END
2227722214 LValue vector = m_out.loadPtr(base, m_heaps.JSArrayBufferView_vector);
2227822215 // FIXME: We could probably make this a mask.
2227922216 // https://bugs.webkit.org/show_bug.cgi?id=197701
22280- vector = removeArrayPtrTag(vector);
2228122217 speculate(Uncountable, jsValueValue(vector), m_node, m_out.isZero64(vector));
2228222218 m_out.jump(continuation);
2228322219
0 commit comments