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

Side by Side Diff: src/runtime.cc

Issue 363323003: More OStreamsUse OStreams more often. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased and polished. Created 6 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/property.cc ('k') | src/safepoint-table.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 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 #include <limits> 6 #include <limits>
7 7
8 #include "src/v8.h" 8 #include "src/v8.h"
9 9
10 #include "src/accessors.h" 10 #include "src/accessors.h"
(...skipping 9530 matching lines...) Expand 10 before | Expand all | Expand 10 after
9541 CONVERT_ARG_CHECKED(Object, obj, 0); 9541 CONVERT_ARG_CHECKED(Object, obj, 0);
9542 PrintTransition(isolate, obj); 9542 PrintTransition(isolate, obj);
9543 return obj; // return TOS 9543 return obj; // return TOS
9544 } 9544 }
9545 9545
9546 9546
9547 RUNTIME_FUNCTION(Runtime_DebugPrint) { 9547 RUNTIME_FUNCTION(Runtime_DebugPrint) {
9548 SealHandleScope shs(isolate); 9548 SealHandleScope shs(isolate);
9549 ASSERT(args.length() == 1); 9549 ASSERT(args.length() == 1);
9550 9550
9551 OFStream os(stdout);
9551 #ifdef DEBUG 9552 #ifdef DEBUG
9552 if (args[0]->IsString()) { 9553 if (args[0]->IsString()) {
9553 // If we have a string, assume it's a code "marker" 9554 // If we have a string, assume it's a code "marker"
9554 // and print some interesting cpu debugging info. 9555 // and print some interesting cpu debugging info.
9555 JavaScriptFrameIterator it(isolate); 9556 JavaScriptFrameIterator it(isolate);
9556 JavaScriptFrame* frame = it.frame(); 9557 JavaScriptFrame* frame = it.frame();
9557 PrintF("fp = %p, sp = %p, caller_sp = %p: ", 9558 os << "fp = " << frame->fp() << ", sp = " << frame->sp()
9558 frame->fp(), frame->sp(), frame->caller_sp()); 9559 << ", caller_sp = " << frame->caller_sp() << ": ";
9559 } else { 9560 } else {
9560 PrintF("DebugPrint: "); 9561 os << "DebugPrint: ";
9561 } 9562 }
9562 args[0]->Print(); 9563 args[0]->Print(os);
9563 if (args[0]->IsHeapObject()) { 9564 if (args[0]->IsHeapObject()) {
9564 PrintF("\n"); 9565 os << "\n";
9565 HeapObject::cast(args[0])->map()->Print(); 9566 HeapObject::cast(args[0])->map()->Print(os);
9566 } 9567 }
9567 #else 9568 #else
9568 // ShortPrint is available in release mode. Print is not. 9569 // ShortPrint is available in release mode. Print is not.
9569 args[0]->ShortPrint(); 9570 os << Brief(args[0]);
9570 #endif 9571 #endif
9571 PrintF("\n"); 9572 os << endl;
9572 Flush();
9573 9573
9574 return args[0]; // return TOS 9574 return args[0]; // return TOS
9575 } 9575 }
9576 9576
9577 9577
9578 RUNTIME_FUNCTION(Runtime_DebugTrace) { 9578 RUNTIME_FUNCTION(Runtime_DebugTrace) {
9579 SealHandleScope shs(isolate); 9579 SealHandleScope shs(isolate);
9580 ASSERT(args.length() == 0); 9580 ASSERT(args.length() == 0);
9581 isolate->PrintStack(stdout); 9581 isolate->PrintStack(stdout);
9582 return isolate->heap()->undefined_value(); 9582 return isolate->heap()->undefined_value();
(...skipping 2526 matching lines...) Expand 10 before | Expand all | Expand 10 after
12109 } else if (nested_scope_chain_.last()->HasContext()) { 12109 } else if (nested_scope_chain_.last()->HasContext()) {
12110 return context_; 12110 return context_;
12111 } else { 12111 } else {
12112 return Handle<Context>(); 12112 return Handle<Context>();
12113 } 12113 }
12114 } 12114 }
12115 12115
12116 #ifdef DEBUG 12116 #ifdef DEBUG
12117 // Debug print of the content of the current scope. 12117 // Debug print of the content of the current scope.
12118 void DebugPrint() { 12118 void DebugPrint() {
12119 OFStream os(stdout);
12119 ASSERT(!failed_); 12120 ASSERT(!failed_);
12120 switch (Type()) { 12121 switch (Type()) {
12121 case ScopeIterator::ScopeTypeGlobal: 12122 case ScopeIterator::ScopeTypeGlobal:
12122 PrintF("Global:\n"); 12123 os << "Global:\n";
12123 CurrentContext()->Print(); 12124 CurrentContext()->Print(os);
12124 break; 12125 break;
12125 12126
12126 case ScopeIterator::ScopeTypeLocal: { 12127 case ScopeIterator::ScopeTypeLocal: {
12127 PrintF("Local:\n"); 12128 os << "Local:\n";
12128 function_->shared()->scope_info()->Print(); 12129 function_->shared()->scope_info()->Print();
12129 if (!CurrentContext().is_null()) { 12130 if (!CurrentContext().is_null()) {
12130 CurrentContext()->Print(); 12131 CurrentContext()->Print(os);
12131 if (CurrentContext()->has_extension()) { 12132 if (CurrentContext()->has_extension()) {
12132 Handle<Object> extension(CurrentContext()->extension(), isolate_); 12133 Handle<Object> extension(CurrentContext()->extension(), isolate_);
12133 if (extension->IsJSContextExtensionObject()) { 12134 if (extension->IsJSContextExtensionObject()) {
12134 extension->Print(); 12135 extension->Print(os);
12135 } 12136 }
12136 } 12137 }
12137 } 12138 }
12138 break; 12139 break;
12139 } 12140 }
12140 12141
12141 case ScopeIterator::ScopeTypeWith: 12142 case ScopeIterator::ScopeTypeWith:
12142 PrintF("With:\n"); 12143 os << "With:\n";
12143 CurrentContext()->extension()->Print(); 12144 CurrentContext()->extension()->Print(os);
12144 break; 12145 break;
12145 12146
12146 case ScopeIterator::ScopeTypeCatch: 12147 case ScopeIterator::ScopeTypeCatch:
12147 PrintF("Catch:\n"); 12148 os << "Catch:\n";
12148 CurrentContext()->extension()->Print(); 12149 CurrentContext()->extension()->Print(os);
12149 CurrentContext()->get(Context::THROWN_OBJECT_INDEX)->Print(); 12150 CurrentContext()->get(Context::THROWN_OBJECT_INDEX)->Print(os);
12150 break; 12151 break;
12151 12152
12152 case ScopeIterator::ScopeTypeClosure: 12153 case ScopeIterator::ScopeTypeClosure:
12153 PrintF("Closure:\n"); 12154 os << "Closure:\n";
12154 CurrentContext()->Print(); 12155 CurrentContext()->Print(os);
12155 if (CurrentContext()->has_extension()) { 12156 if (CurrentContext()->has_extension()) {
12156 Handle<Object> extension(CurrentContext()->extension(), isolate_); 12157 Handle<Object> extension(CurrentContext()->extension(), isolate_);
12157 if (extension->IsJSContextExtensionObject()) { 12158 if (extension->IsJSContextExtensionObject()) {
12158 extension->Print(); 12159 extension->Print(os);
12159 } 12160 }
12160 } 12161 }
12161 break; 12162 break;
12162 12163
12163 default: 12164 default:
12164 UNREACHABLE(); 12165 UNREACHABLE();
12165 } 12166 }
12166 PrintF("\n"); 12167 PrintF("\n");
12167 } 12168 }
12168 #endif 12169 #endif
(...skipping 1088 matching lines...) Expand 10 before | Expand all | Expand 10 after
13257 13258
13258 RUNTIME_FUNCTION(Runtime_DebugDisassembleFunction) { 13259 RUNTIME_FUNCTION(Runtime_DebugDisassembleFunction) {
13259 HandleScope scope(isolate); 13260 HandleScope scope(isolate);
13260 #ifdef DEBUG 13261 #ifdef DEBUG
13261 ASSERT(args.length() == 1); 13262 ASSERT(args.length() == 1);
13262 // Get the function and make sure it is compiled. 13263 // Get the function and make sure it is compiled.
13263 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0); 13264 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0);
13264 if (!Compiler::EnsureCompiled(func, KEEP_EXCEPTION)) { 13265 if (!Compiler::EnsureCompiled(func, KEEP_EXCEPTION)) {
13265 return isolate->heap()->exception(); 13266 return isolate->heap()->exception();
13266 } 13267 }
13267 func->code()->PrintLn(); 13268 OFStream os(stdout);
13269 func->code()->Print(os);
13270 os << endl;
13268 #endif // DEBUG 13271 #endif // DEBUG
13269 return isolate->heap()->undefined_value(); 13272 return isolate->heap()->undefined_value();
13270 } 13273 }
13271 13274
13272 13275
13273 RUNTIME_FUNCTION(Runtime_DebugDisassembleConstructor) { 13276 RUNTIME_FUNCTION(Runtime_DebugDisassembleConstructor) {
13274 HandleScope scope(isolate); 13277 HandleScope scope(isolate);
13275 #ifdef DEBUG 13278 #ifdef DEBUG
13276 ASSERT(args.length() == 1); 13279 ASSERT(args.length() == 1);
13277 // Get the function and make sure it is compiled. 13280 // Get the function and make sure it is compiled.
13278 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0); 13281 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0);
13279 if (!Compiler::EnsureCompiled(func, KEEP_EXCEPTION)) { 13282 if (!Compiler::EnsureCompiled(func, KEEP_EXCEPTION)) {
13280 return isolate->heap()->exception(); 13283 return isolate->heap()->exception();
13281 } 13284 }
13282 func->shared()->construct_stub()->PrintLn(); 13285 OFStream os(stdout);
13286 func->shared()->construct_stub()->Print(os);
13287 os << endl;
13283 #endif // DEBUG 13288 #endif // DEBUG
13284 return isolate->heap()->undefined_value(); 13289 return isolate->heap()->undefined_value();
13285 } 13290 }
13286 13291
13287 13292
13288 RUNTIME_FUNCTION(Runtime_FunctionGetInferredName) { 13293 RUNTIME_FUNCTION(Runtime_FunctionGetInferredName) {
13289 SealHandleScope shs(isolate); 13294 SealHandleScope shs(isolate);
13290 ASSERT(args.length() == 1); 13295 ASSERT(args.length() == 1);
13291 13296
13292 CONVERT_ARG_CHECKED(JSFunction, f, 0); 13297 CONVERT_ARG_CHECKED(JSFunction, f, 0);
(...skipping 1819 matching lines...) Expand 10 before | Expand all | Expand 10 after
15112 } 15117 }
15113 return NULL; 15118 return NULL;
15114 } 15119 }
15115 15120
15116 15121
15117 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) { 15122 const Runtime::Function* Runtime::FunctionForId(Runtime::FunctionId id) {
15118 return &(kIntrinsicFunctions[static_cast<int>(id)]); 15123 return &(kIntrinsicFunctions[static_cast<int>(id)]);
15119 } 15124 }
15120 15125
15121 } } // namespace v8::internal 15126 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/property.cc ('k') | src/safepoint-table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698