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

Side by Side Diff: src/bootstrapper.cc

Issue 1413503007: Provide a counter for thrown JavaScript errors per context (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Moved initialization Created 5 years, 1 month 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
« no previous file with comments | « no previous file | src/contexts.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 "src/bootstrapper.h" 5 #include "src/bootstrapper.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api-natives.h" 8 #include "src/api-natives.h"
9 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
10 #include "src/extensions/externalize-string-extension.h" 10 #include "src/extensions/externalize-string-extension.h"
(...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after
363 static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) { 363 static void SetObjectPrototype(Handle<JSObject> object, Handle<Object> proto) {
364 // object.__proto__ = proto; 364 // object.__proto__ = proto;
365 Handle<Map> old_map = Handle<Map>(object->map()); 365 Handle<Map> old_map = Handle<Map>(object->map());
366 Handle<Map> new_map = Map::Copy(old_map, "SetObjectPrototype"); 366 Handle<Map> new_map = Map::Copy(old_map, "SetObjectPrototype");
367 Map::SetPrototype(new_map, proto, FAST_PROTOTYPE); 367 Map::SetPrototype(new_map, proto, FAST_PROTOTYPE);
368 JSObject::MigrateToMap(object, new_map); 368 JSObject::MigrateToMap(object, new_map);
369 } 369 }
370 370
371 371
372 void Bootstrapper::DetachGlobal(Handle<Context> env) { 372 void Bootstrapper::DetachGlobal(Handle<Context> env) {
373 env->GetIsolate()->counters()->errors_thrown_per_context()->AddSample(
374 env->GetErrorsThrown());
375
373 Factory* factory = env->GetIsolate()->factory(); 376 Factory* factory = env->GetIsolate()->factory();
374 Handle<JSGlobalProxy> global_proxy(JSGlobalProxy::cast(env->global_proxy())); 377 Handle<JSGlobalProxy> global_proxy(JSGlobalProxy::cast(env->global_proxy()));
375 global_proxy->set_native_context(*factory->null_value()); 378 global_proxy->set_native_context(*factory->null_value());
376 SetObjectPrototype(global_proxy, factory->null_value()); 379 SetObjectPrototype(global_proxy, factory->null_value());
377 global_proxy->map()->SetConstructor(*factory->null_value()); 380 global_proxy->map()->SetConstructor(*factory->null_value());
378 if (FLAG_track_detached_contexts) { 381 if (FLAG_track_detached_contexts) {
379 env->GetIsolate()->AddDetachedContext(env); 382 env->GetIsolate()->AddDetachedContext(env);
380 } 383 }
381 } 384 }
382 385
(...skipping 2815 matching lines...) Expand 10 before | Expand all | Expand 10 after
3198 3201
3199 if (!InstallNatives(context_type)) return; 3202 if (!InstallNatives(context_type)) return;
3200 3203
3201 MakeFunctionInstancePrototypeWritable(); 3204 MakeFunctionInstancePrototypeWritable();
3202 3205
3203 if (context_type != THIN_CONTEXT) { 3206 if (context_type != THIN_CONTEXT) {
3204 if (!InstallExtraNatives()) return; 3207 if (!InstallExtraNatives()) return;
3205 if (!ConfigureGlobalObjects(global_proxy_template)) return; 3208 if (!ConfigureGlobalObjects(global_proxy_template)) return;
3206 } 3209 }
3207 isolate->counters()->contexts_created_from_scratch()->Increment(); 3210 isolate->counters()->contexts_created_from_scratch()->Increment();
3211 // Re-initialize the counter because it got incremented during snapshot
3212 // creation.
3213 isolate->native_context()->set_errors_thrown(Smi::FromInt(0));
3208 } 3214 }
3209 3215
3210 // Install experimental natives. Do not include them into the 3216 // Install experimental natives. Do not include them into the
3211 // snapshot as we should be able to turn them off at runtime. Re-installing 3217 // snapshot as we should be able to turn them off at runtime. Re-installing
3212 // them after they have already been deserialized would also fail. 3218 // them after they have already been deserialized would also fail.
3213 if (context_type == FULL_CONTEXT) { 3219 if (context_type == FULL_CONTEXT) {
3214 if (!isolate->serializer_enabled()) { 3220 if (!isolate->serializer_enabled()) {
3215 InitializeExperimentalGlobal(); 3221 InitializeExperimentalGlobal();
3216 if (!InstallExperimentalNatives()) return; 3222 if (!InstallExperimentalNatives()) return;
3217 3223
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
3262 } 3268 }
3263 3269
3264 3270
3265 // Called when the top-level V8 mutex is destroyed. 3271 // Called when the top-level V8 mutex is destroyed.
3266 void Bootstrapper::FreeThreadResources() { 3272 void Bootstrapper::FreeThreadResources() {
3267 DCHECK(!IsActive()); 3273 DCHECK(!IsActive());
3268 } 3274 }
3269 3275
3270 } // namespace internal 3276 } // namespace internal
3271 } // namespace v8 3277 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/contexts.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698