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

Side by Side Diff: src/ia32/code-stubs-ia32.cc

Issue 7350014: Remove the ability to compile without logging and profiling (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed review comments Created 9 years, 5 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/heap-profiler.cc ('k') | src/ia32/codegen-ia32.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 4362 matching lines...) Expand 10 before | Expand all | Expand 10 after
4373 __ bind(&throw_termination_exception); 4373 __ bind(&throw_termination_exception);
4374 GenerateThrowUncatchable(masm, TERMINATION); 4374 GenerateThrowUncatchable(masm, TERMINATION);
4375 4375
4376 __ bind(&throw_normal_exception); 4376 __ bind(&throw_normal_exception);
4377 GenerateThrowTOS(masm); 4377 GenerateThrowTOS(masm);
4378 } 4378 }
4379 4379
4380 4380
4381 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) { 4381 void JSEntryStub::GenerateBody(MacroAssembler* masm, bool is_construct) {
4382 Label invoke, exit; 4382 Label invoke, exit;
4383 #ifdef ENABLE_LOGGING_AND_PROFILING
4384 Label not_outermost_js, not_outermost_js_2; 4383 Label not_outermost_js, not_outermost_js_2;
4385 #endif
4386 4384
4387 // Setup frame. 4385 // Setup frame.
4388 __ push(ebp); 4386 __ push(ebp);
4389 __ mov(ebp, Operand(esp)); 4387 __ mov(ebp, Operand(esp));
4390 4388
4391 // Push marker in two places. 4389 // Push marker in two places.
4392 int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY; 4390 int marker = is_construct ? StackFrame::ENTRY_CONSTRUCT : StackFrame::ENTRY;
4393 __ push(Immediate(Smi::FromInt(marker))); // context slot 4391 __ push(Immediate(Smi::FromInt(marker))); // context slot
4394 __ push(Immediate(Smi::FromInt(marker))); // function slot 4392 __ push(Immediate(Smi::FromInt(marker))); // function slot
4395 // Save callee-saved registers (C calling conventions). 4393 // Save callee-saved registers (C calling conventions).
4396 __ push(edi); 4394 __ push(edi);
4397 __ push(esi); 4395 __ push(esi);
4398 __ push(ebx); 4396 __ push(ebx);
4399 4397
4400 // Save copies of the top frame descriptor on the stack. 4398 // Save copies of the top frame descriptor on the stack.
4401 ExternalReference c_entry_fp(Isolate::k_c_entry_fp_address, masm->isolate()); 4399 ExternalReference c_entry_fp(Isolate::k_c_entry_fp_address, masm->isolate());
4402 __ push(Operand::StaticVariable(c_entry_fp)); 4400 __ push(Operand::StaticVariable(c_entry_fp));
4403 4401
4404 #ifdef ENABLE_LOGGING_AND_PROFILING
4405 // If this is the outermost JS call, set js_entry_sp value. 4402 // If this is the outermost JS call, set js_entry_sp value.
4406 ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address, 4403 ExternalReference js_entry_sp(Isolate::k_js_entry_sp_address,
4407 masm->isolate()); 4404 masm->isolate());
4408 __ cmp(Operand::StaticVariable(js_entry_sp), Immediate(0)); 4405 __ cmp(Operand::StaticVariable(js_entry_sp), Immediate(0));
4409 __ j(not_equal, &not_outermost_js); 4406 __ j(not_equal, &not_outermost_js);
4410 __ mov(Operand::StaticVariable(js_entry_sp), ebp); 4407 __ mov(Operand::StaticVariable(js_entry_sp), ebp);
4411 __ push(Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME))); 4408 __ push(Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
4412 Label cont; 4409 Label cont;
4413 __ jmp(&cont); 4410 __ jmp(&cont);
4414 __ bind(&not_outermost_js); 4411 __ bind(&not_outermost_js);
4415 __ push(Immediate(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME))); 4412 __ push(Immediate(Smi::FromInt(StackFrame::INNER_JSENTRY_FRAME)));
4416 __ bind(&cont); 4413 __ bind(&cont);
4417 #endif
4418 4414
4419 // Call a faked try-block that does the invoke. 4415 // Call a faked try-block that does the invoke.
4420 __ call(&invoke); 4416 __ call(&invoke);
4421 4417
4422 // Caught exception: Store result (exception) in the pending 4418 // Caught exception: Store result (exception) in the pending
4423 // exception field in the JSEnv and return a failure sentinel. 4419 // exception field in the JSEnv and return a failure sentinel.
4424 ExternalReference pending_exception(Isolate::k_pending_exception_address, 4420 ExternalReference pending_exception(Isolate::k_pending_exception_address,
4425 masm->isolate()); 4421 masm->isolate());
4426 __ mov(Operand::StaticVariable(pending_exception), eax); 4422 __ mov(Operand::StaticVariable(pending_exception), eax);
4427 __ mov(eax, reinterpret_cast<int32_t>(Failure::Exception())); 4423 __ mov(eax, reinterpret_cast<int32_t>(Failure::Exception()));
(...skipping 27 matching lines...) Expand all
4455 __ mov(edx, Immediate(entry)); 4451 __ mov(edx, Immediate(entry));
4456 } 4452 }
4457 __ mov(edx, Operand(edx, 0)); // deref address 4453 __ mov(edx, Operand(edx, 0)); // deref address
4458 __ lea(edx, FieldOperand(edx, Code::kHeaderSize)); 4454 __ lea(edx, FieldOperand(edx, Code::kHeaderSize));
4459 __ call(Operand(edx)); 4455 __ call(Operand(edx));
4460 4456
4461 // Unlink this frame from the handler chain. 4457 // Unlink this frame from the handler chain.
4462 __ PopTryHandler(); 4458 __ PopTryHandler();
4463 4459
4464 __ bind(&exit); 4460 __ bind(&exit);
4465 #ifdef ENABLE_LOGGING_AND_PROFILING
4466 // Check if the current stack frame is marked as the outermost JS frame. 4461 // Check if the current stack frame is marked as the outermost JS frame.
4467 __ pop(ebx); 4462 __ pop(ebx);
4468 __ cmp(Operand(ebx), 4463 __ cmp(Operand(ebx),
4469 Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME))); 4464 Immediate(Smi::FromInt(StackFrame::OUTERMOST_JSENTRY_FRAME)));
4470 __ j(not_equal, &not_outermost_js_2); 4465 __ j(not_equal, &not_outermost_js_2);
4471 __ mov(Operand::StaticVariable(js_entry_sp), Immediate(0)); 4466 __ mov(Operand::StaticVariable(js_entry_sp), Immediate(0));
4472 __ bind(&not_outermost_js_2); 4467 __ bind(&not_outermost_js_2);
4473 #endif
4474 4468
4475 // Restore the top frame descriptor from the stack. 4469 // Restore the top frame descriptor from the stack.
4476 __ pop(Operand::StaticVariable(ExternalReference( 4470 __ pop(Operand::StaticVariable(ExternalReference(
4477 Isolate::k_c_entry_fp_address, 4471 Isolate::k_c_entry_fp_address,
4478 masm->isolate()))); 4472 masm->isolate())));
4479 4473
4480 // Restore callee-saved registers (C calling conventions). 4474 // Restore callee-saved registers (C calling conventions).
4481 __ pop(ebx); 4475 __ pop(ebx);
4482 __ pop(esi); 4476 __ pop(esi);
4483 __ pop(edi); 4477 __ pop(edi);
(...skipping 1860 matching lines...) Expand 10 before | Expand all | Expand 10 after
6344 __ Drop(1); 6338 __ Drop(1);
6345 __ ret(2 * kPointerSize); 6339 __ ret(2 * kPointerSize);
6346 } 6340 }
6347 6341
6348 6342
6349 #undef __ 6343 #undef __
6350 6344
6351 } } // namespace v8::internal 6345 } } // namespace v8::internal
6352 6346
6353 #endif // V8_TARGET_ARCH_IA32 6347 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« no previous file with comments | « src/heap-profiler.cc ('k') | src/ia32/codegen-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698