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

Side by Side Diff: src/bootstrapper.cc

Issue 971713002: Version 4.3.13.1 (cherry-pick) (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@4.3.13
Patch Set: Created 5 years, 9 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/accessors.cc ('k') | test/mjsunit/es6/function-name-configurable.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 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 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 function->shared()->set_native(true); 375 function->shared()->set_native(true);
376 return function; 376 return function;
377 } 377 }
378 378
379 379
380 void Genesis::SetFunctionInstanceDescriptor( 380 void Genesis::SetFunctionInstanceDescriptor(
381 Handle<Map> map, FunctionMode function_mode) { 381 Handle<Map> map, FunctionMode function_mode) {
382 int size = IsFunctionModeWithPrototype(function_mode) ? 5 : 4; 382 int size = IsFunctionModeWithPrototype(function_mode) ? 5 : 4;
383 Map::EnsureDescriptorSlack(map, size); 383 Map::EnsureDescriptorSlack(map, size);
384 384
385 PropertyAttributes ro_attribs = 385 PropertyAttributes attribs = static_cast<PropertyAttributes>(
386 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); 386 DONT_ENUM | DONT_DELETE | READ_ONLY);
387 PropertyAttributes roc_attribs =
388 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY);
389 387
390 Handle<AccessorInfo> length = 388 Handle<AccessorInfo> length =
391 Accessors::FunctionLengthInfo(isolate(), ro_attribs); 389 Accessors::FunctionLengthInfo(isolate(), attribs);
392 { // Add length. 390 { // Add length.
393 AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())), 391 AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())),
394 length, ro_attribs); 392 length, attribs);
395 map->AppendDescriptor(&d); 393 map->AppendDescriptor(&d);
396 } 394 }
397 Handle<AccessorInfo> name = 395 Handle<AccessorInfo> name =
398 Accessors::FunctionNameInfo(isolate(), ro_attribs); 396 Accessors::FunctionNameInfo(isolate(), attribs);
399 { // Add name. 397 { // Add name.
400 AccessorConstantDescriptor d(Handle<Name>(Name::cast(name->name())), name, 398 AccessorConstantDescriptor d(Handle<Name>(Name::cast(name->name())), name,
401 roc_attribs); 399 attribs);
402 map->AppendDescriptor(&d); 400 map->AppendDescriptor(&d);
403 } 401 }
404 Handle<AccessorInfo> args = 402 Handle<AccessorInfo> args =
405 Accessors::FunctionArgumentsInfo(isolate(), ro_attribs); 403 Accessors::FunctionArgumentsInfo(isolate(), attribs);
406 { // Add arguments. 404 { // Add arguments.
407 AccessorConstantDescriptor d(Handle<Name>(Name::cast(args->name())), args, 405 AccessorConstantDescriptor d(Handle<Name>(Name::cast(args->name())), args,
408 ro_attribs); 406 attribs);
409 map->AppendDescriptor(&d); 407 map->AppendDescriptor(&d);
410 } 408 }
411 Handle<AccessorInfo> caller = 409 Handle<AccessorInfo> caller =
412 Accessors::FunctionCallerInfo(isolate(), ro_attribs); 410 Accessors::FunctionCallerInfo(isolate(), attribs);
413 { // Add caller. 411 { // Add caller.
414 AccessorConstantDescriptor d(Handle<Name>(Name::cast(caller->name())), 412 AccessorConstantDescriptor d(Handle<Name>(Name::cast(caller->name())),
415 caller, ro_attribs); 413 caller, attribs);
416 map->AppendDescriptor(&d); 414 map->AppendDescriptor(&d);
417 } 415 }
418 if (IsFunctionModeWithPrototype(function_mode)) { 416 if (IsFunctionModeWithPrototype(function_mode)) {
419 if (function_mode == FUNCTION_WITH_WRITEABLE_PROTOTYPE) { 417 if (function_mode == FUNCTION_WITH_WRITEABLE_PROTOTYPE) {
420 ro_attribs = static_cast<PropertyAttributes>(ro_attribs & ~READ_ONLY); 418 attribs = static_cast<PropertyAttributes>(attribs & ~READ_ONLY);
421 } 419 }
422 Handle<AccessorInfo> prototype = 420 Handle<AccessorInfo> prototype =
423 Accessors::FunctionPrototypeInfo(isolate(), ro_attribs); 421 Accessors::FunctionPrototypeInfo(isolate(), attribs);
424 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())), 422 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())),
425 prototype, ro_attribs); 423 prototype, attribs);
426 map->AppendDescriptor(&d); 424 map->AppendDescriptor(&d);
427 } 425 }
428 } 426 }
429 427
430 428
431 Handle<Map> Genesis::CreateSloppyFunctionMap(FunctionMode function_mode) { 429 Handle<Map> Genesis::CreateSloppyFunctionMap(FunctionMode function_mode) {
432 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); 430 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize);
433 SetFunctionInstanceDescriptor(map, function_mode); 431 SetFunctionInstanceDescriptor(map, function_mode);
434 map->set_function_with_prototype(IsFunctionModeWithPrototype(function_mode)); 432 map->set_function_with_prototype(IsFunctionModeWithPrototype(function_mode));
435 return map; 433 return map;
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 Handle<Map> map, FunctionMode function_mode) { 533 Handle<Map> map, FunctionMode function_mode) {
536 int size = IsFunctionModeWithPrototype(function_mode) ? 5 : 4; 534 int size = IsFunctionModeWithPrototype(function_mode) ? 5 : 4;
537 Map::EnsureDescriptorSlack(map, size); 535 Map::EnsureDescriptorSlack(map, size);
538 536
539 Handle<AccessorPair> arguments(factory()->NewAccessorPair()); 537 Handle<AccessorPair> arguments(factory()->NewAccessorPair());
540 Handle<AccessorPair> caller(factory()->NewAccessorPair()); 538 Handle<AccessorPair> caller(factory()->NewAccessorPair());
541 PropertyAttributes rw_attribs = 539 PropertyAttributes rw_attribs =
542 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); 540 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE);
543 PropertyAttributes ro_attribs = 541 PropertyAttributes ro_attribs =
544 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); 542 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY);
545 PropertyAttributes roc_attribs =
546 static_cast<PropertyAttributes>(DONT_ENUM | READ_ONLY);
547 543
548 // Add length. 544 // Add length.
549 if (function_mode == BOUND_FUNCTION) { 545 if (function_mode == BOUND_FUNCTION) {
550 Handle<String> length_string = isolate()->factory()->length_string(); 546 Handle<String> length_string = isolate()->factory()->length_string();
551 DataDescriptor d(length_string, 0, ro_attribs, Representation::Tagged()); 547 DataDescriptor d(length_string, 0, ro_attribs, Representation::Tagged());
552 map->AppendDescriptor(&d); 548 map->AppendDescriptor(&d);
553 } else { 549 } else {
554 DCHECK(function_mode == FUNCTION_WITH_WRITEABLE_PROTOTYPE || 550 DCHECK(function_mode == FUNCTION_WITH_WRITEABLE_PROTOTYPE ||
555 function_mode == FUNCTION_WITH_READONLY_PROTOTYPE || 551 function_mode == FUNCTION_WITH_READONLY_PROTOTYPE ||
556 function_mode == FUNCTION_WITHOUT_PROTOTYPE); 552 function_mode == FUNCTION_WITHOUT_PROTOTYPE);
557 Handle<AccessorInfo> length = 553 Handle<AccessorInfo> length =
558 Accessors::FunctionLengthInfo(isolate(), ro_attribs); 554 Accessors::FunctionLengthInfo(isolate(), ro_attribs);
559 AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())), 555 AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())),
560 length, ro_attribs); 556 length, ro_attribs);
561 map->AppendDescriptor(&d); 557 map->AppendDescriptor(&d);
562 } 558 }
563 Handle<AccessorInfo> name = 559 Handle<AccessorInfo> name =
564 Accessors::FunctionNameInfo(isolate(), roc_attribs); 560 Accessors::FunctionNameInfo(isolate(), ro_attribs);
565 { // Add name. 561 { // Add name.
566 AccessorConstantDescriptor d(Handle<Name>(Name::cast(name->name())), name, 562 AccessorConstantDescriptor d(Handle<Name>(Name::cast(name->name())), name,
567 roc_attribs); 563 ro_attribs);
568 map->AppendDescriptor(&d); 564 map->AppendDescriptor(&d);
569 } 565 }
570 { // Add arguments. 566 { // Add arguments.
571 AccessorConstantDescriptor d(factory()->arguments_string(), arguments, 567 AccessorConstantDescriptor d(factory()->arguments_string(), arguments,
572 rw_attribs); 568 rw_attribs);
573 map->AppendDescriptor(&d); 569 map->AppendDescriptor(&d);
574 } 570 }
575 { // Add caller. 571 { // Add caller.
576 AccessorConstantDescriptor d(factory()->caller_string(), caller, 572 AccessorConstantDescriptor d(factory()->caller_string(), caller,
577 rw_attribs); 573 rw_attribs);
(...skipping 2351 matching lines...) Expand 10 before | Expand all | Expand 10 after
2929 return from + sizeof(NestingCounterType); 2925 return from + sizeof(NestingCounterType);
2930 } 2926 }
2931 2927
2932 2928
2933 // Called when the top-level V8 mutex is destroyed. 2929 // Called when the top-level V8 mutex is destroyed.
2934 void Bootstrapper::FreeThreadResources() { 2930 void Bootstrapper::FreeThreadResources() {
2935 DCHECK(!IsActive()); 2931 DCHECK(!IsActive());
2936 } 2932 }
2937 2933
2938 } } // namespace v8::internal 2934 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/accessors.cc ('k') | test/mjsunit/es6/function-name-configurable.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698