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:
mstarzinger@chromium.org 2013-04-25 12:00:07 +00:00
parent 71dc9e165f
commit 8f1fc88f8c
2 changed files with 7 additions and 5 deletions

View File

@ -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);
}

View File

@ -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: