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

Side by Side Diff: src/isolate.cc

Issue 1294583006: Clean up native context slots and add new ones. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 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
« no previous file with comments | « src/factory.cc ('k') | src/json.js » ('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 6
7 #include <fstream> // NOLINT(readability/streams) 7 #include <fstream> // NOLINT(readability/streams)
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/v8.h" 10 #include "src/v8.h"
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 return false; 325 return false;
326 } 326 }
327 } 327 }
328 return true; 328 return true;
329 } 329 }
330 330
331 331
332 Handle<Object> Isolate::CaptureSimpleStackTrace(Handle<JSObject> error_object, 332 Handle<Object> Isolate::CaptureSimpleStackTrace(Handle<JSObject> error_object,
333 Handle<Object> caller) { 333 Handle<Object> caller) {
334 // Get stack trace limit. 334 // Get stack trace limit.
335 Handle<Object> error = Object::GetProperty( 335 Handle<JSObject> error = error_function();
336 this, js_builtins_object(), "$Error").ToHandleChecked();
337 if (!error->IsJSObject()) return factory()->undefined_value();
338
339 Handle<String> stackTraceLimit = 336 Handle<String> stackTraceLimit =
340 factory()->InternalizeUtf8String("stackTraceLimit"); 337 factory()->InternalizeUtf8String("stackTraceLimit");
341 DCHECK(!stackTraceLimit.is_null()); 338 DCHECK(!stackTraceLimit.is_null());
342 Handle<Object> stack_trace_limit = JSReceiver::GetDataProperty( 339 Handle<Object> stack_trace_limit =
343 Handle<JSObject>::cast(error), stackTraceLimit); 340 JSReceiver::GetDataProperty(error, stackTraceLimit);
344 if (!stack_trace_limit->IsNumber()) return factory()->undefined_value(); 341 if (!stack_trace_limit->IsNumber()) return factory()->undefined_value();
345 int limit = FastD2IChecked(stack_trace_limit->Number()); 342 int limit = FastD2IChecked(stack_trace_limit->Number());
346 limit = Max(limit, 0); // Ensure that limit is not negative. 343 limit = Max(limit, 0); // Ensure that limit is not negative.
347 344
348 int initial_size = Min(limit, 10); 345 int initial_size = Min(limit, 10);
349 Handle<FixedArray> elements = 346 Handle<FixedArray> elements =
350 factory()->NewFixedArrayWithHoles(initial_size * 4 + 1); 347 factory()->NewFixedArrayWithHoles(initial_size * 4 + 1);
351 348
352 // If the caller parameter is a function we skip frames until we're 349 // If the caller parameter is a function we skip frames until we're
353 // under it before starting to collect. 350 // under it before starting to collect.
(...skipping 983 matching lines...) Expand 10 before | Expand all | Expand 10 after
1337 } 1334 }
1338 } 1335 }
1339 return false; 1336 return false;
1340 } 1337 }
1341 1338
1342 1339
1343 // Traverse prototype chain to find out whether the object is derived from 1340 // Traverse prototype chain to find out whether the object is derived from
1344 // the Error object. 1341 // the Error object.
1345 bool Isolate::IsErrorObject(Handle<Object> obj) { 1342 bool Isolate::IsErrorObject(Handle<Object> obj) {
1346 if (!obj->IsJSObject()) return false; 1343 if (!obj->IsJSObject()) return false;
1347 1344 Handle<Object> error_constructor = error_function();
1348 Handle<String> error_key =
1349 factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR("$Error"));
1350 Handle<Object> error_constructor = Object::GetProperty(
1351 js_builtins_object(), error_key).ToHandleChecked();
1352
1353 DisallowHeapAllocation no_gc; 1345 DisallowHeapAllocation no_gc;
1354 for (PrototypeIterator iter(this, *obj, PrototypeIterator::START_AT_RECEIVER); 1346 for (PrototypeIterator iter(this, *obj, PrototypeIterator::START_AT_RECEIVER);
1355 !iter.IsAtEnd(); iter.Advance()) { 1347 !iter.IsAtEnd(); iter.Advance()) {
1356 if (iter.GetCurrent()->IsJSProxy()) return false; 1348 if (iter.GetCurrent()->IsJSProxy()) return false;
1357 if (JSObject::cast(iter.GetCurrent())->map()->GetConstructor() == 1349 if (JSObject::cast(iter.GetCurrent())->map()->GetConstructor() ==
1358 *error_constructor) { 1350 *error_constructor) {
1359 return true; 1351 return true;
1360 } 1352 }
1361 } 1353 }
1362 return false; 1354 return false;
(...skipping 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after
2825 // Then check whether this scope intercepts. 2817 // Then check whether this scope intercepts.
2826 if ((flag & intercept_mask_)) { 2818 if ((flag & intercept_mask_)) {
2827 intercepted_flags_ |= flag; 2819 intercepted_flags_ |= flag;
2828 return true; 2820 return true;
2829 } 2821 }
2830 return false; 2822 return false;
2831 } 2823 }
2832 2824
2833 } // namespace internal 2825 } // namespace internal
2834 } // namespace v8 2826 } // namespace v8
OLDNEW
« no previous file with comments | « src/factory.cc ('k') | src/json.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698