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

Side by Side Diff: src/arm/macro-assembler-arm.cc

Issue 11411224: Also time external callbacks from generated code. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | src/assembler.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 2204 matching lines...) Expand 10 before | Expand all | Expand 10 after
2215 next_address); 2215 next_address);
2216 2216
2217 // Allocate HandleScope in callee-save registers. 2217 // Allocate HandleScope in callee-save registers.
2218 mov(r7, Operand(next_address)); 2218 mov(r7, Operand(next_address));
2219 ldr(r4, MemOperand(r7, kNextOffset)); 2219 ldr(r4, MemOperand(r7, kNextOffset));
2220 ldr(r5, MemOperand(r7, kLimitOffset)); 2220 ldr(r5, MemOperand(r7, kLimitOffset));
2221 ldr(r6, MemOperand(r7, kLevelOffset)); 2221 ldr(r6, MemOperand(r7, kLevelOffset));
2222 add(r6, r6, Operand(1)); 2222 add(r6, r6, Operand(1));
2223 str(r6, MemOperand(r7, kLevelOffset)); 2223 str(r6, MemOperand(r7, kLevelOffset));
2224 2224
2225 if (FLAG_log_timer_events) {
2226 FrameScope frame(this, StackFrame::MANUAL);
2227 PushSafepointRegisters();
2228 PrepareCallCFunction(0, r0);
2229 CallCFunction(ExternalReference::log_enter_external_function(isolate()), 0);
2230 PopSafepointRegisters();
2231 }
2232
2225 // Native call returns to the DirectCEntry stub which redirects to the 2233 // Native call returns to the DirectCEntry stub which redirects to the
2226 // return address pushed on stack (could have moved after GC). 2234 // return address pushed on stack (could have moved after GC).
2227 // DirectCEntry stub itself is generated early and never moves. 2235 // DirectCEntry stub itself is generated early and never moves.
2228 DirectCEntryStub stub; 2236 DirectCEntryStub stub;
2229 stub.GenerateCall(this, function); 2237 stub.GenerateCall(this, function);
2230 2238
2239 if (FLAG_log_timer_events) {
2240 FrameScope frame(this, StackFrame::MANUAL);
2241 PushSafepointRegisters();
2242 PrepareCallCFunction(0, r0);
2243 CallCFunction(ExternalReference::log_leave_external_function(isolate()), 0);
2244 PopSafepointRegisters();
2245 }
2246
2231 Label promote_scheduled_exception; 2247 Label promote_scheduled_exception;
2232 Label delete_allocated_handles; 2248 Label delete_allocated_handles;
2233 Label leave_exit_frame; 2249 Label leave_exit_frame;
2234 2250
2235 // If result is non-zero, dereference to get the result value 2251 // If result is non-zero, dereference to get the result value
2236 // otherwise set it to undefined. 2252 // otherwise set it to undefined.
2237 cmp(r0, Operand(0)); 2253 cmp(r0, Operand(0));
2238 LoadRoot(r0, Heap::kUndefinedValueRootIndex, eq); 2254 LoadRoot(r0, Heap::kUndefinedValueRootIndex, eq);
2239 ldr(r0, MemOperand(r0), ne); 2255 ldr(r0, MemOperand(r0), ne);
2240 2256
(...skipping 1643 matching lines...) Expand 10 before | Expand all | Expand 10 after
3884 void CodePatcher::EmitCondition(Condition cond) { 3900 void CodePatcher::EmitCondition(Condition cond) {
3885 Instr instr = Assembler::instr_at(masm_.pc_); 3901 Instr instr = Assembler::instr_at(masm_.pc_);
3886 instr = (instr & ~kCondMask) | cond; 3902 instr = (instr & ~kCondMask) | cond;
3887 masm_.emit(instr); 3903 masm_.emit(instr);
3888 } 3904 }
3889 3905
3890 3906
3891 } } // namespace v8::internal 3907 } } // namespace v8::internal
3892 3908
3893 #endif // V8_TARGET_ARCH_ARM 3909 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « no previous file | src/assembler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698