Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Unified Diff: src/codegen-ia32.cc

Issue 15077: Merge bleeding-edge change 985, RecordStatementPosition reform, into... (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/toiger/
Patch Set: '' Created 12 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/codegen-ia32.h ('k') | src/parser.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/codegen-ia32.cc
===================================================================
--- src/codegen-ia32.cc (revision 1011)
+++ src/codegen-ia32.cc (working copy)
@@ -119,7 +119,7 @@
void CodeGenerator::GenCode(FunctionLiteral* fun) {
// Record the position for debugging purposes.
- __ RecordPosition(fun->start_position());
+ CodeForSourcePosition(fun->start_position());
ZoneList<Statement*>* body = fun->body();
@@ -1275,7 +1275,7 @@
}
// Record the position for debugging purposes.
- __ RecordPosition(position);
+ CodeForSourcePosition(position);
// Use the shared code stub to call the function.
CallFunctionStub call_function(arg_count);
@@ -1323,7 +1323,7 @@
void CodeGenerator::VisitBlock(Block* node) {
ASSERT(!in_spilled_code());
Comment cmnt(masm_, "[ Block");
- RecordStatementPosition(node);
+ CodeForStatement(node);
node->set_break_stack_height(break_stack_height_);
node->break_target()->set_code_generator(this);
VisitStatements(node->statements());
@@ -1345,6 +1345,7 @@
void CodeGenerator::VisitDeclaration(Declaration* node) {
Comment cmnt(masm_, "[ Declaration");
+ CodeForStatement(node);
Variable* var = node->proxy()->var();
ASSERT(var != NULL); // must have been resolved
Slot* slot = var->slot();
@@ -1409,7 +1410,7 @@
void CodeGenerator::VisitExpressionStatement(ExpressionStatement* node) {
ASSERT(!in_spilled_code());
Comment cmnt(masm_, "[ ExpressionStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
Expression* expression = node->expression();
expression->MarkAsStatement();
Load(expression);
@@ -1422,6 +1423,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "// EmptyStatement");
+ CodeForStatement(node);
// nothing to do
}
@@ -1435,7 +1437,7 @@
bool has_then_stm = node->HasThenStatement();
bool has_else_stm = node->HasElseStatement();
- RecordStatementPosition(node);
+ CodeForStatement(node);
JumpTarget exit(this);
if (has_then_stm && has_else_stm) {
JumpTarget then(this);
@@ -1533,7 +1535,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ ContinueStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
CleanStack(break_stack_height_ - node->target()->break_stack_height());
node->target()->continue_target()->Jump();
}
@@ -1543,7 +1545,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ BreakStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
CleanStack(break_stack_height_ - node->target()->break_stack_height());
node->target()->break_target()->Jump();
}
@@ -1553,7 +1555,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ ReturnStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
LoadAndSpill(node->expression());
// Move the function result into eax
@@ -1594,7 +1596,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ WithEnterStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
LoadAndSpill(node->expression());
frame_->CallRuntime(Runtime::kPushContext, 1);
@@ -1616,6 +1618,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ WithExitStatement");
+ CodeForStatement(node);
// Pop context.
__ mov(esi, ContextOperand(esi, Context::PREVIOUS_INDEX));
// Update context local.
@@ -1704,7 +1707,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ SwitchStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
node->set_break_stack_height(break_stack_height_);
node->break_target()->set_code_generator(this);
@@ -1796,7 +1799,7 @@
void CodeGenerator::VisitLoopStatement(LoopStatement* node) {
ASSERT(!in_spilled_code());
Comment cmnt(masm_, "[ LoopStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
node->set_break_stack_height(break_stack_height_);
node->break_target()->set_code_generator(this);
node->continue_target()->set_code_generator(this);
@@ -1958,8 +1961,7 @@
// Record source position of the statement as this code which is
// after the code for the body actually belongs to the loop
// statement and not the body.
- RecordStatementPosition(node);
- __ RecordPosition(node->statement_pos());
+ CodeForStatement(node);
ASSERT(node->type() == LoopStatement::FOR_LOOP);
Visit(node->next());
loop.Jump();
@@ -1981,7 +1983,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ ForInStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
// We keep stuff on the stack while the body is executing.
// Record it, so that a break/continue crossing this statement
@@ -2168,6 +2170,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ TryCatch");
+ CodeForStatement(node);
JumpTarget try_block(this);
JumpTarget exit(this);
@@ -2284,6 +2287,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ TryFinally");
+ CodeForStatement(node);
// State: Used to keep track of reason for entering the finally
// block. Should probably be extended to hold information for
@@ -2435,7 +2439,7 @@
ASSERT(!in_spilled_code());
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ DebuggerStatement");
- RecordStatementPosition(node);
+ CodeForStatement(node);
frame_->CallRuntime(Runtime::kDebugBreak, 0);
// Ignore the return value.
}
@@ -2909,8 +2913,8 @@
void CodeGenerator::VisitAssignment(Assignment* node) {
Comment cmnt(masm_, "[ Assignment");
+ CodeForStatement(node);
- RecordStatementPosition(node);
{ Reference target(this, node->target());
if (target.is_illegal()) {
// Fool the virtual frame into thinking that we left the assignment's
@@ -2943,7 +2947,7 @@
node->op() != Token::INIT_VAR && node->op() != Token::INIT_CONST) {
// Assignment ignored - leave the value on the stack.
} else {
- __ RecordPosition(node->position());
+ CodeForSourcePosition(node->position());
if (node->op() == Token::INIT_CONST) {
// Dynamic constant initializations must use the function context
// and initialize the actual constant declared. Dynamic variable
@@ -2960,9 +2964,9 @@
void CodeGenerator::VisitThrow(Throw* node) {
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ Throw");
+ CodeForStatement(node);
LoadAndSpill(node->exception());
- __ RecordPosition(node->position());
frame_->CallRuntime(Runtime::kThrow, 1);
frame_->EmitPush(eax);
}
@@ -2982,7 +2986,7 @@
ZoneList<Expression*>* args = node->arguments();
- RecordStatementPosition(node);
+ CodeForStatement(node);
// Check if the function is a variable or a property.
Expression* function = node->expression();
@@ -3020,7 +3024,7 @@
Handle<Code> stub = (loop_nesting() > 0)
? ComputeCallInitializeInLoop(arg_count)
: ComputeCallInitialize(arg_count);
- __ RecordPosition(node->position());
+ CodeForSourcePosition(node->position());
frame_->CallCodeObject(stub, RelocInfo::CODE_TARGET_CONTEXT,
arg_count + 1);
__ mov(esi, frame_->Context());
@@ -3070,7 +3074,7 @@
Handle<Code> stub = (loop_nesting() > 0)
? ComputeCallInitializeInLoop(arg_count)
: ComputeCallInitialize(arg_count);
- __ RecordPosition(node->position());
+ CodeForSourcePosition(node->position());
frame_->CallCodeObject(stub, RelocInfo::CODE_TARGET, arg_count + 1);
__ mov(esi, frame_->Context());
@@ -3114,6 +3118,7 @@
void CodeGenerator::VisitCallNew(CallNew* node) {
VirtualFrame::SpilledScope spilled_scope(this);
Comment cmnt(masm_, "[ CallNew");
+ CodeForStatement(node);
// According to ECMA-262, section 11.2.2, page 44, the function
// expression in new calls must be evaluated before the
@@ -3145,7 +3150,7 @@
// Call the construct call builtin that handles allocation and
// constructor invocation.
- __ RecordPosition(node->position());
+ CodeForSourcePosition(node->position());
Handle<Code> ic(Builtins::builtin(Builtins::JSConstructCall));
frame_->CallCodeObject(ic, RelocInfo::CONSTRUCT_CALL, args->length() + 1);
// Discard the function and "push" the newly created object.
@@ -3164,7 +3169,7 @@
ZoneList<Expression*>* args = node->arguments();
Expression* function = node->expression();
- RecordStatementPosition(node);
+ CodeForStatement(node);
// Prepare stack for call to resolved function.
LoadAndSpill(function);
@@ -3193,7 +3198,7 @@
__ mov(frame_->ElementAt(arg_count), edx);
// Call the function.
- __ RecordPosition(node->position());
+ CodeForSourcePosition(node->position());
CallFunctionStub call_function(arg_count);
frame_->CallStub(&call_function, arg_count + 1);
@@ -4134,16 +4139,6 @@
}
-void CodeGenerator::RecordStatementPosition(Node* node) {
- if (FLAG_debug_info) {
- int pos = node->statement_pos();
- if (pos != RelocInfo::kNoPosition) {
- __ RecordStatementPosition(pos);
- }
- }
-}
-
-
bool CodeGenerator::IsActualFunctionReturn(JumpTarget* target) {
return (target == &function_return_ && !function_return_is_shadowed_);
}
@@ -4162,8 +4157,6 @@
ASSERT(proxy->AsVariable()->is_global());
return proxy->name();
} else {
- MacroAssembler* masm = cgen_->masm();
- __ RecordPosition(property->position());
Literal* raw_name = property->key()->AsLiteral();
ASSERT(raw_name != NULL);
return Handle<String>(String::cast(*raw_name->handle()));
@@ -4217,7 +4210,6 @@
Comment cmnt(masm, "[ Load from keyed Property");
Property* property = expression_->AsProperty();
ASSERT(property != NULL);
- __ RecordPosition(property->position());
Handle<Code> ic(Builtins::builtin(Builtins::KeyedLoadIC_Initialize));
Variable* var = expression_->AsVariableProxy()->AsVariable();
@@ -4271,7 +4263,6 @@
Comment cmnt(masm, "[ Store to keyed Property");
Property* property = expression_->AsProperty();
ASSERT(property != NULL);
- __ RecordPosition(property->position());
// Call IC code.
Handle<Code> ic(Builtins::builtin(Builtins::KeyedStoreIC_Initialize));
// TODO(1222589): Make the IC grab the values from the stack.
« no previous file with comments | « src/codegen-ia32.h ('k') | src/parser.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698