| OLD | NEW |
| 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 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 void SetFunctionInstanceDescriptor(Handle<Map> map, | 280 void SetFunctionInstanceDescriptor(Handle<Map> map, |
| 281 FunctionMode function_mode); | 281 FunctionMode function_mode); |
| 282 void MakeFunctionInstancePrototypeWritable(); | 282 void MakeFunctionInstancePrototypeWritable(); |
| 283 | 283 |
| 284 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, | 284 Handle<Map> CreateStrictFunctionMap(FunctionMode function_mode, |
| 285 Handle<JSFunction> empty_function); | 285 Handle<JSFunction> empty_function); |
| 286 | 286 |
| 287 | 287 |
| 288 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, | 288 void SetStrictFunctionInstanceDescriptor(Handle<Map> map, |
| 289 FunctionMode function_mode); | 289 FunctionMode function_mode); |
| 290 void SetStrongFunctionInstanceDescriptor(Handle<Map> map); | |
| 291 | 290 |
| 292 static bool CallUtilsFunction(Isolate* isolate, const char* name); | 291 static bool CallUtilsFunction(Isolate* isolate, const char* name); |
| 293 | 292 |
| 294 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); | 293 static bool CompileExtension(Isolate* isolate, v8::Extension* extension); |
| 295 | 294 |
| 296 Isolate* isolate_; | 295 Isolate* isolate_; |
| 297 Handle<Context> result_; | 296 Handle<Context> result_; |
| 298 Handle<Context> native_context_; | 297 Handle<Context> native_context_; |
| 299 | 298 |
| 300 // Function maps. Function maps are created initially with a read only | 299 // Function maps. Function maps are created initially with a read only |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 : ro_attribs; | 620 : ro_attribs; |
| 622 Handle<AccessorInfo> prototype = | 621 Handle<AccessorInfo> prototype = |
| 623 Accessors::FunctionPrototypeInfo(isolate(), attribs); | 622 Accessors::FunctionPrototypeInfo(isolate(), attribs); |
| 624 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())), | 623 AccessorConstantDescriptor d(Handle<Name>(Name::cast(prototype->name())), |
| 625 prototype, attribs); | 624 prototype, attribs); |
| 626 map->AppendDescriptor(&d); | 625 map->AppendDescriptor(&d); |
| 627 } | 626 } |
| 628 } | 627 } |
| 629 | 628 |
| 630 | 629 |
| 631 void Genesis::SetStrongFunctionInstanceDescriptor(Handle<Map> map) { | |
| 632 Map::EnsureDescriptorSlack(map, 2); | |
| 633 | |
| 634 PropertyAttributes ro_attribs = | |
| 635 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | |
| 636 | |
| 637 Handle<AccessorInfo> length = | |
| 638 Accessors::FunctionLengthInfo(isolate(), ro_attribs); | |
| 639 { // Add length. | |
| 640 AccessorConstantDescriptor d(Handle<Name>(Name::cast(length->name())), | |
| 641 length, ro_attribs); | |
| 642 map->AppendDescriptor(&d); | |
| 643 } | |
| 644 Handle<AccessorInfo> name = | |
| 645 Accessors::FunctionNameInfo(isolate(), ro_attribs); | |
| 646 { // Add name. | |
| 647 AccessorConstantDescriptor d(Handle<Name>(Name::cast(name->name())), name, | |
| 648 ro_attribs); | |
| 649 map->AppendDescriptor(&d); | |
| 650 } | |
| 651 } | |
| 652 | |
| 653 | |
| 654 // Creates the %ThrowTypeError% function. | 630 // Creates the %ThrowTypeError% function. |
| 655 Handle<JSFunction> Genesis::GetThrowTypeErrorIntrinsic( | 631 Handle<JSFunction> Genesis::GetThrowTypeErrorIntrinsic( |
| 656 Builtins::Name builtin_name) { | 632 Builtins::Name builtin_name) { |
| 657 Handle<String> name = | 633 Handle<String> name = |
| 658 factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR("ThrowTypeError")); | 634 factory()->InternalizeOneByteString(STATIC_CHAR_VECTOR("ThrowTypeError")); |
| 659 Handle<Code> code(isolate()->builtins()->builtin(builtin_name)); | 635 Handle<Code> code(isolate()->builtins()->builtin(builtin_name)); |
| 660 Handle<JSFunction> function = | 636 Handle<JSFunction> function = |
| 661 factory()->NewFunctionWithoutPrototype(name, code); | 637 factory()->NewFunctionWithoutPrototype(name, code); |
| 662 function->shared()->DontAdaptArguments(); | 638 function->shared()->DontAdaptArguments(); |
| 663 | 639 |
| (...skipping 2990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3654 } | 3630 } |
| 3655 | 3631 |
| 3656 | 3632 |
| 3657 // Called when the top-level V8 mutex is destroyed. | 3633 // Called when the top-level V8 mutex is destroyed. |
| 3658 void Bootstrapper::FreeThreadResources() { | 3634 void Bootstrapper::FreeThreadResources() { |
| 3659 DCHECK(!IsActive()); | 3635 DCHECK(!IsActive()); |
| 3660 } | 3636 } |
| 3661 | 3637 |
| 3662 } // namespace internal | 3638 } // namespace internal |
| 3663 } // namespace v8 | 3639 } // namespace v8 |
| OLD | NEW |