Bug 874643 - Declare CallGetIntrinsicValue MIR to be unsafe r=shu

This commit is contained in:
Nicholas D. Matsakis 2013-05-25 13:47:10 -04:00
parent ee46ea7758
commit 59421789f3
2 changed files with 3 additions and 21 deletions

View File

@ -1494,26 +1494,8 @@ static const VMFunction GetIntrinsicValueInfo =
bool
CodeGenerator::visitCallGetIntrinsicValue(LCallGetIntrinsicValue *lir)
{
// When compiling parallel kernels, always bail.
switch (gen->info().executionMode()) {
case SequentialExecution: {
pushArg(ImmGCPtr(lir->mir()->name()));
return callVM(GetIntrinsicValueInfo, lir);
}
case ParallelExecution: {
OutOfLineParallelAbort *bail = oolParallelAbort(ParallelBailoutAccessToIntrinsic, lir);
if (!bail)
return false;
masm.jump(bail->entry());
return true;
}
default:
JS_NOT_REACHED("Bad execution mode");
return false;
}
pushArg(ImmGCPtr(lir->mir()->name()));
return callVM(GetIntrinsicValueInfo, lir);
}
typedef bool (*InvokeFunctionFn)(JSContext *, HandleFunction, uint32_t, Value *, Value *);

View File

@ -225,7 +225,7 @@ class ParallelArrayVisitor : public MInstructionVisitor
WRITE_GUARDED_OP(StoreFixedSlot, object)
UNSAFE_OP(CallGetProperty)
UNSAFE_OP(GetNameCache)
SAFE_OP(CallGetIntrinsicValue) // Bails in parallel mode
UNSAFE_OP(CallGetIntrinsicValue)
UNSAFE_OP(CallsiteCloneCache)
UNSAFE_OP(CallGetElement)
UNSAFE_OP(CallSetElement)