Add %_DebugBreakInOptimizedCode() pseudo function call to insert int3/stop instructions into optimized code

R=mstarzinger@chromium.org

Review URL: https://codereview.chromium.org/17870002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15392 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
jkummerow@chromium.org 2013-06-28 15:48:38 +00:00
parent c7a9bffbcf
commit 05b94f13c8
7 changed files with 35 additions and 5 deletions

View File

@ -940,6 +940,11 @@ void FullCodeGenerator::EmitGeneratorThrow(CallRuntime* expr) {
}
void FullCodeGenerator::EmitDebugBreakInOptimizedCode(CallRuntime* expr) {
context()->Plug(handle(Smi::FromInt(0), isolate()));
}
void FullCodeGenerator::VisitBinaryOperation(BinaryOperation* expr) {
switch (expr->op()) {
case Token::COMMA:

View File

@ -10635,6 +10635,13 @@ void HOptimizedGraphBuilder::GenerateGeneratorThrow(CallRuntime* call) {
}
void HOptimizedGraphBuilder::GenerateDebugBreakInOptimizedCode(
CallRuntime* call) {
AddInstruction(new(zone()) HDebugBreak());
return ast_context()->ReturnValue(graph()->GetConstant0());
}
#undef CHECK_BAILOUT
#undef CHECK_ALIVE

View File

@ -597,7 +597,8 @@ namespace internal {
F(GetCachedArrayIndex, 1, 1) \
F(FastAsciiArrayJoin, 2, 1) \
F(GeneratorNext, 2, 1) \
F(GeneratorThrow, 2, 1)
F(GeneratorThrow, 2, 1) \
F(DebugBreakInOptimizedCode, 0, 1)
// ----------------------------------------------------------------------------

View File

@ -163,6 +163,8 @@ var knownProblems = {
"ResolvePossiblyDirectEval": true,
"Log": true,
"DeclareGlobals": true,
"ArrayConstructor": true,
"InternalArrayConstructor": true,
"PromoteScheduledException": true,
"DeleteHandleScopeExtensions": true,
@ -214,7 +216,9 @@ var knownProblems = {
var currentlyUncallable = {
// We need to find a way to test this without breaking the system.
"SystemBreak": true
"SystemBreak": true,
// Inserts an int3/stop instruction when run with --always-opt.
"_DebugBreakInOptimizedCode": true
};
function testNatives() {

View File

@ -153,6 +153,7 @@ var knownProblems = {
"ParallelRecompile": true,
"InstallRecompiledCode": true,
"NotifyDeoptimized": true,
"NotifyStubFailure": true,
"NotifyOSR": true,
"CreateObjectLiteralBoilerplate": true,
"CloneLiteralBoilerplate": true,
@ -215,7 +216,9 @@ var knownProblems = {
var currentlyUncallable = {
// We need to find a way to test this without breaking the system.
"SystemBreak": true
"SystemBreak": true,
// Inserts an int3/stop instruction when run with --always-opt.
"_DebugBreakInOptimizedCode": true
};
function testNatives() {

View File

@ -153,6 +153,7 @@ var knownProblems = {
"ParallelRecompile": true,
"InstallRecompiledCode": true,
"NotifyDeoptimized": true,
"NotifyStubFailure": true,
"NotifyOSR": true,
"CreateObjectLiteralBoilerplate": true,
"CloneLiteralBoilerplate": true,
@ -162,6 +163,8 @@ var knownProblems = {
"ResolvePossiblyDirectEval": true,
"Log": true,
"DeclareGlobals": true,
"ArrayConstructor": true,
"InternalArrayConstructor": true,
"PromoteScheduledException": true,
"DeleteHandleScopeExtensions": true,
@ -213,7 +216,9 @@ var knownProblems = {
var currentlyUncallable = {
// We need to find a way to test this without breaking the system.
"SystemBreak": true
"SystemBreak": true,
// Inserts an int3/stop instruction when run with --always-opt.
"_DebugBreakInOptimizedCode": true
};
function testNatives() {

View File

@ -153,6 +153,7 @@ var knownProblems = {
"ParallelRecompile": true,
"InstallRecompiledCode": true,
"NotifyDeoptimized": true,
"NotifyStubFailure": true,
"NotifyOSR": true,
"CreateObjectLiteralBoilerplate": true,
"CloneLiteralBoilerplate": true,
@ -162,6 +163,8 @@ var knownProblems = {
"ResolvePossiblyDirectEval": true,
"Log": true,
"DeclareGlobals": true,
"ArrayConstructor": true,
"InternalArrayConstructor": true,
"PromoteScheduledException": true,
"DeleteHandleScopeExtensions": true,
@ -213,7 +216,9 @@ var knownProblems = {
var currentlyUncallable = {
// We need to find a way to test this without breaking the system.
"SystemBreak": true
"SystemBreak": true,
// Inserts an int3/stop instruction when run with --always-opt.
"_DebugBreakInOptimizedCode": true
};
function testNatives() {