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

Side by Side Diff: test/cctest/test-log-stack-tracer.cc

Issue 3107033: Remove the full codegen syntax checker completely but be... (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 10 years, 4 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/parser.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-2009 the V8 project authors. All rights reserved.
2 // 2 //
3 // Tests of profiler-related functions from log.h 3 // Tests of profiler-related functions from log.h
4 4
5 #ifdef ENABLE_LOGGING_AND_PROFILING 5 #ifdef ENABLE_LOGGING_AND_PROFILING
6 6
7 #include <stdlib.h> 7 #include <stdlib.h>
8 8
9 #include "v8.h" 9 #include "v8.h"
10 10
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 return i::Factory::NewStringFromAscii(i::CStrVector(s)); 209 return i::Factory::NewStringFromAscii(i::CStrVector(s));
210 } 210 }
211 211
212 212
213 namespace v8 { 213 namespace v8 {
214 namespace internal { 214 namespace internal {
215 215
216 class CodeGeneratorPatcher { 216 class CodeGeneratorPatcher {
217 public: 217 public:
218 CodeGeneratorPatcher() { 218 CodeGeneratorPatcher() {
219 CodeGenerator::InlineRuntimeLUT genGetFramePointer = 219 CodeGenerator::InlineRuntimeLUT gen_get_frame_pointer =
220 {&CodeGenerator::GenerateGetFramePointer, "_GetFramePointer", 0}; 220 {&CodeGenerator::GenerateGetFramePointer, "_GetFramePointer", 0};
221 // _RandomHeapNumber is just used as a dummy function that has zero 221 // _RandomHeapNumber is just used as a dummy function that has zero
222 // arguments, the same as the _GetFramePointer function we actually patch 222 // arguments, the same as the _GetFramePointer function we actually patch
223 // in. 223 // in.
224 bool result = CodeGenerator::PatchInlineRuntimeEntry( 224 bool result = CodeGenerator::PatchInlineRuntimeEntry(
225 NewString("_RandomHeapNumber"), 225 NewString("_RandomHeapNumber"),
226 genGetFramePointer, &oldInlineEntry); 226 gen_get_frame_pointer, &old_inline_entry);
227 CHECK(result); 227 CHECK(result);
228 } 228 }
229 229
230 ~CodeGeneratorPatcher() { 230 ~CodeGeneratorPatcher() {
231 CHECK(CodeGenerator::PatchInlineRuntimeEntry( 231 CHECK(CodeGenerator::PatchInlineRuntimeEntry(
232 NewString("_GetFramePointer"), 232 NewString("_GetFramePointer"),
233 oldInlineEntry, NULL)); 233 old_inline_entry, NULL));
234 } 234 }
235 235
236 private: 236 private:
237 CodeGenerator::InlineRuntimeLUT oldInlineEntry; 237 CodeGenerator::InlineRuntimeLUT old_inline_entry;
238 }; 238 };
239 239
240 } } // namespace v8::internal 240 } } // namespace v8::internal
241 241
242 242
243 // Creates a global function named 'func_name' that calls the tracing 243 // Creates a global function named 'func_name' that calls the tracing
244 // function 'trace_func_name' with an actual EBP register value, 244 // function 'trace_func_name' with an actual EBP register value,
245 // shifted right to be presented as Smi. 245 // shifted right to be presented as Smi.
246 static void CreateTraceCallerFunction(const char* func_name, 246 static void CreateTraceCallerFunction(const char* func_name,
247 const char* trace_func_name) { 247 const char* trace_func_name) {
(...skipping 18 matching lines...) Expand all
266 SetGlobalProperty(func_name, v8::ToApi<Value>(func)); 266 SetGlobalProperty(func_name, v8::ToApi<Value>(func));
267 CHECK_EQ(*func, *GetGlobalJSFunction(func_name)); 267 CHECK_EQ(*func, *GetGlobalJSFunction(func_name));
268 } 268 }
269 269
270 270
271 // This test verifies that stack tracing works when called during 271 // This test verifies that stack tracing works when called during
272 // execution of a native function called from JS code. In this case, 272 // execution of a native function called from JS code. In this case,
273 // StackTracer uses Top::c_entry_fp as a starting point for stack 273 // StackTracer uses Top::c_entry_fp as a starting point for stack
274 // walking. 274 // walking.
275 TEST(CFromJSStackTrace) { 275 TEST(CFromJSStackTrace) {
276 // TODO(711) The hack of replacing the inline runtime function 276 // TODO(711): The hack of replacing the inline runtime function
277 // RandomHeapNumber with GetFrameNumber does not work with the way the full 277 // RandomHeapNumber with GetFrameNumber does not work with the way
278 // compiler generates inline runtime calls. 278 // the full compiler generates inline runtime calls.
279 i::FLAG_full_compiler = false;
279 i::FLAG_always_full_compiler = false; 280 i::FLAG_always_full_compiler = false;
280 281
281 TickSample sample; 282 TickSample sample;
282 InitTraceEnv(&sample); 283 InitTraceEnv(&sample);
283 284
284 InitializeVM(); 285 InitializeVM();
285 v8::HandleScope scope; 286 v8::HandleScope scope;
286 // Create global function JSFuncDoTrace which calls 287 // Create global function JSFuncDoTrace which calls
287 // extension function trace() with the current frame pointer value. 288 // extension function trace() with the current frame pointer value.
288 CreateTraceCallerFunction("JSFuncDoTrace", "trace"); 289 CreateTraceCallerFunction("JSFuncDoTrace", "trace");
(...skipping 17 matching lines...) Expand all
306 CheckObjectIsJSFunction("JSTrace", sample.stack[1]); 307 CheckObjectIsJSFunction("JSTrace", sample.stack[1]);
307 } 308 }
308 309
309 310
310 // This test verifies that stack tracing works when called during 311 // This test verifies that stack tracing works when called during
311 // execution of JS code. However, as calling StackTracer requires 312 // execution of JS code. However, as calling StackTracer requires
312 // entering native code, we can only emulate pure JS by erasing 313 // entering native code, we can only emulate pure JS by erasing
313 // Top::c_entry_fp value. In this case, StackTracer uses passed frame 314 // Top::c_entry_fp value. In this case, StackTracer uses passed frame
314 // pointer value as a starting point for stack walking. 315 // pointer value as a starting point for stack walking.
315 TEST(PureJSStackTrace) { 316 TEST(PureJSStackTrace) {
316 // TODO(711) The hack of replacing the inline runtime function 317 // TODO(711): The hack of replacing the inline runtime function
317 // RandomHeapNumber with GetFrameNumber does not work with the way the full 318 // RandomHeapNumber with GetFrameNumber does not work with the way
318 // compiler generates inline runtime calls. 319 // the full compiler generates inline runtime calls.
320 i::FLAG_full_compiler = false;
319 i::FLAG_always_full_compiler = false; 321 i::FLAG_always_full_compiler = false;
320 322
321 TickSample sample; 323 TickSample sample;
322 InitTraceEnv(&sample); 324 InitTraceEnv(&sample);
323 325
324 InitializeVM(); 326 InitializeVM();
325 v8::HandleScope scope; 327 v8::HandleScope scope;
326 // Create global function JSFuncDoTrace which calls 328 // Create global function JSFuncDoTrace which calls
327 // extension function js_trace() with the current frame pointer value. 329 // extension function js_trace() with the current frame pointer value.
328 CreateTraceCallerFunction("JSFuncDoTrace", "js_trace"); 330 CreateTraceCallerFunction("JSFuncDoTrace", "js_trace");
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 CHECK_EQ(0, GetJsEntrySp()); 400 CHECK_EQ(0, GetJsEntrySp());
399 CompileRun("a = 1; b = a + 1;"); 401 CompileRun("a = 1; b = a + 1;");
400 CHECK_EQ(0, GetJsEntrySp()); 402 CHECK_EQ(0, GetJsEntrySp());
401 CompileRun("js_entry_sp();"); 403 CompileRun("js_entry_sp();");
402 CHECK_EQ(0, GetJsEntrySp()); 404 CHECK_EQ(0, GetJsEntrySp());
403 CompileRun("js_entry_sp_level2();"); 405 CompileRun("js_entry_sp_level2();");
404 CHECK_EQ(0, GetJsEntrySp()); 406 CHECK_EQ(0, GetJsEntrySp());
405 } 407 }
406 408
407 #endif // ENABLE_LOGGING_AND_PROFILING 409 #endif // ENABLE_LOGGING_AND_PROFILING
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698