Relax --debug-code checks that runtime returns are not the hole
ia32, unlike the other architectures, includes a --debug-code check that asserts that runtime functions do not return the hole. However the new SuspendJSGeneratorObject runtime does return the hole at times. This CL adds a wee hack that only signals an error if the callee was not SuspendJSGeneratorObject. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/13856011 Patch from Andy Wingo <wingo@igalia.com>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14437 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
71dc9e165f
commit
8f1fc88f8c
@ -5051,12 +5051,17 @@ void CEntryStub::GenerateCore(MacroAssembler* masm,
|
||||
__ dec(Operand::StaticVariable(scope_depth));
|
||||
}
|
||||
|
||||
// Make sure we're not trying to return 'the hole' from the runtime
|
||||
// call as this may lead to crashes in the IC code later.
|
||||
// Runtime functions should not return 'the hole'. Allowing it to escape may
|
||||
// lead to crashes in the IC code later.
|
||||
if (FLAG_debug_code) {
|
||||
Label okay;
|
||||
__ cmp(eax, masm->isolate()->factory()->the_hole_value());
|
||||
__ j(not_equal, &okay, Label::kNear);
|
||||
// TODO(wingo): Currently SuspendJSGeneratorObject returns the hole. Change
|
||||
// to return another sentinel like a harmony symbol.
|
||||
__ cmp(ebx, Immediate(ExternalReference(
|
||||
Runtime::kSuspendJSGeneratorObject, masm->isolate())));
|
||||
__ j(equal, &okay, Label::kNear);
|
||||
__ int3();
|
||||
__ bind(&okay);
|
||||
}
|
||||
|
@ -34,9 +34,6 @@ bugs/*: FAIL
|
||||
# Fails.
|
||||
regress/regress-1119: FAIL
|
||||
|
||||
# TODO(wingo): Currently fails in no-snapshot mode, hence disabled for now.
|
||||
harmony/generators-objects: SKIP
|
||||
|
||||
# Issue 1719: Slow to collect arrays over several contexts.
|
||||
regress/regress-524: SKIP
|
||||
# When that bug is fixed, revert the expectation to:
|
||||
|
Loading…
Reference in New Issue
Block a user