Changeset 34024 in webkit for trunk/JavaScriptCore
- Timestamp:
- May 22, 2008, 2:53:25 AM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r34022 r34024 1 2008-05-22 Oliver Hunt <[email protected]> 2 3 RS=Maciej. 4 5 Roll out r34020 as it causes recursion tests to fail. 6 7 * kjs/object.cpp: 8 (KJS::JSObject::call): 9 1 10 2008-05-22 Oliver Hunt <[email protected]> 2 11 -
trunk/JavaScriptCore/kjs/object.cpp
r34020 r34024 35 35 #include <wtf/Assertions.h> 36 36 37 // maximum global call stack size. Protects against accidental or 38 // malicious infinite recursions. Define to -1 if you want no limit. 39 // In real-world testing it appears ok to bump the stack depth count to 500. 40 // This of course is dependent on stack frame size. 41 #define KJS_MAX_STACK 500 42 43 #define JAVASCRIPT_CALL_TRACING 0 37 44 #define JAVASCRIPT_MARK_TRACING 0 38 45 46 #if JAVASCRIPT_CALL_TRACING 47 static bool _traceJavaScript = false; 48 49 extern "C" { 50 void setTraceJavaScript(bool f) 51 { 52 _traceJavaScript = f; 53 } 54 55 static bool traceJavaScript() 56 { 57 return _traceJavaScript; 58 } 59 } 60 #endif 61 39 62 namespace KJS { 40 63 … … 44 67 { 45 68 ASSERT(implementsCall()); 69 70 #if KJS_MAX_STACK > 0 71 static int depth = 0; // sum of all extant function calls 72 73 #if JAVASCRIPT_CALL_TRACING 74 static bool tracing = false; 75 if (traceJavaScript() && !tracing) { 76 tracing = true; 77 for (int i = 0; i < depth; i++) 78 putchar (' '); 79 printf ("*** calling: %s\n", toString(exec).ascii()); 80 for (int j = 0; j < args.size(); j++) { 81 for (int i = 0; i < depth; i++) 82 putchar (' '); 83 printf ("*** arg[%d] = %s\n", j, args[j]->toString(exec).ascii()); 84 } 85 tracing = false; 86 } 87 #endif 88 89 if (++depth > KJS_MAX_STACK) { 90 --depth; 91 return throwError(exec, RangeError, "Maximum call stack size exceeded."); 92 } 93 #endif 46 94 47 95 #if JAVASCRIPT_PROFILING … … 53 101 #if JAVASCRIPT_PROFILING 54 102 Profiler::profiler()->didExecute(exec, this); 103 #endif 104 105 106 #if KJS_MAX_STACK > 0 107 --depth; 108 #endif 109 110 #if JAVASCRIPT_CALL_TRACING 111 if (traceJavaScript() && !tracing) { 112 tracing = true; 113 for (int i = 0; i < depth; i++) 114 putchar (' '); 115 printf ("*** returning: %s\n", ret->toString(exec).ascii()); 116 tracing = false; 117 } 55 118 #endif 56 119
Note:
See TracChangeset
for help on using the changeset viewer.