OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/objects.h" | 5 #include "src/objects.h" |
6 | 6 |
7 #include <cmath> | 7 #include <cmath> |
8 #include <iomanip> | 8 #include <iomanip> |
9 #include <sstream> | 9 #include <sstream> |
10 | 10 |
(...skipping 977 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
988 if (info->call_code()->IsCallHandlerInfo() && | 988 if (info->call_code()->IsCallHandlerInfo() && |
989 CallHandlerInfo::cast(info->call_code())->fast_handler()->IsCode()) { | 989 CallHandlerInfo::cast(info->call_code())->fast_handler()->IsCode()) { |
990 code = isolate->builtins()->HandleFastApiCall(); | 990 code = isolate->builtins()->HandleFastApiCall(); |
991 } else { | 991 } else { |
992 code = isolate->builtins()->HandleApiCall(); | 992 code = isolate->builtins()->HandleApiCall(); |
993 } | 993 } |
994 bool is_constructor = !info->remove_prototype(); | 994 bool is_constructor = !info->remove_prototype(); |
995 Handle<SharedFunctionInfo> result = | 995 Handle<SharedFunctionInfo> result = |
996 isolate->factory()->NewSharedFunctionInfo(name, code, is_constructor); | 996 isolate->factory()->NewSharedFunctionInfo(name, code, is_constructor); |
997 if (is_constructor) { | 997 if (is_constructor) { |
998 result->set_construct_stub(*isolate->builtins()->JSConstructStubApi()); | 998 result->SetConstructStub(*isolate->builtins()->JSConstructStubApi()); |
999 } | 999 } |
1000 | 1000 |
1001 result->set_length(info->length()); | 1001 result->set_length(info->length()); |
1002 if (class_name->IsString()) result->set_instance_class_name(*class_name); | 1002 if (class_name->IsString()) result->set_instance_class_name(*class_name); |
1003 result->set_api_func_data(*info); | 1003 result->set_api_func_data(*info); |
1004 result->DontAdaptArguments(); | 1004 result->DontAdaptArguments(); |
1005 DCHECK(result->IsApiFunction()); | 1005 DCHECK(result->IsApiFunction()); |
1006 | 1006 |
1007 info->set_shared_function_info(*result); | 1007 info->set_shared_function_info(*result); |
1008 return result; | 1008 return result; |
(...skipping 12228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13237 shared_info->set_allows_lazy_compilation(lit->AllowsLazyCompilation()); | 13237 shared_info->set_allows_lazy_compilation(lit->AllowsLazyCompilation()); |
13238 shared_info->set_allows_lazy_compilation_without_context( | 13238 shared_info->set_allows_lazy_compilation_without_context( |
13239 lit->AllowsLazyCompilationWithoutContext()); | 13239 lit->AllowsLazyCompilationWithoutContext()); |
13240 shared_info->set_language_mode(lit->language_mode()); | 13240 shared_info->set_language_mode(lit->language_mode()); |
13241 shared_info->set_uses_arguments(lit->scope()->arguments() != NULL); | 13241 shared_info->set_uses_arguments(lit->scope()->arguments() != NULL); |
13242 shared_info->set_has_duplicate_parameters(lit->has_duplicate_parameters()); | 13242 shared_info->set_has_duplicate_parameters(lit->has_duplicate_parameters()); |
13243 shared_info->set_is_function(lit->is_function()); | 13243 shared_info->set_is_function(lit->is_function()); |
13244 shared_info->set_never_compiled(true); | 13244 shared_info->set_never_compiled(true); |
13245 shared_info->set_kind(lit->kind()); | 13245 shared_info->set_kind(lit->kind()); |
13246 if (!IsConstructable(lit->kind(), lit->language_mode())) { | 13246 if (!IsConstructable(lit->kind(), lit->language_mode())) { |
13247 shared_info->set_construct_stub( | 13247 shared_info->SetConstructStub( |
13248 *shared_info->GetIsolate()->builtins()->ConstructedNonConstructable()); | 13248 *shared_info->GetIsolate()->builtins()->ConstructedNonConstructable()); |
13249 } | 13249 } |
13250 shared_info->set_needs_home_object(lit->scope()->NeedsHomeObject()); | 13250 shared_info->set_needs_home_object(lit->scope()->NeedsHomeObject()); |
13251 shared_info->set_asm_function(lit->scope()->asm_function()); | 13251 shared_info->set_asm_function(lit->scope()->asm_function()); |
13252 SetExpectedNofPropertiesFromEstimate(shared_info, lit); | 13252 SetExpectedNofPropertiesFromEstimate(shared_info, lit); |
13253 } | 13253 } |
13254 | 13254 |
13255 | 13255 |
13256 bool SharedFunctionInfo::VerifyBailoutId(BailoutId id) { | 13256 bool SharedFunctionInfo::VerifyBailoutId(BailoutId id) { |
13257 DCHECK(!id.IsNone()); | 13257 DCHECK(!id.IsNone()); |
13258 Code* unoptimized = code(); | 13258 Code* unoptimized = code(); |
13259 DeoptimizationOutputData* data = | 13259 DeoptimizationOutputData* data = |
13260 DeoptimizationOutputData::cast(unoptimized->deoptimization_data()); | 13260 DeoptimizationOutputData::cast(unoptimized->deoptimization_data()); |
13261 unsigned ignore = Deoptimizer::GetOutputInfo(data, id, this); | 13261 unsigned ignore = Deoptimizer::GetOutputInfo(data, id, this); |
13262 USE(ignore); | 13262 USE(ignore); |
13263 return true; // Return true if there was no DCHECK. | 13263 return true; // Return true if there was no DCHECK. |
13264 } | 13264 } |
13265 | 13265 |
| 13266 void SharedFunctionInfo::SetConstructStub(Code* code) { |
| 13267 if (code->kind() == Code::BUILTIN) code->set_is_construct_stub(true); |
| 13268 set_construct_stub(code); |
| 13269 } |
13266 | 13270 |
13267 void Map::StartInobjectSlackTracking() { | 13271 void Map::StartInobjectSlackTracking() { |
13268 DCHECK(!IsInobjectSlackTrackingInProgress()); | 13272 DCHECK(!IsInobjectSlackTrackingInProgress()); |
13269 | 13273 |
13270 // No tracking during the snapshot construction phase. | 13274 // No tracking during the snapshot construction phase. |
13271 Isolate* isolate = GetIsolate(); | 13275 Isolate* isolate = GetIsolate(); |
13272 if (isolate->serializer_enabled()) return; | 13276 if (isolate->serializer_enabled()) return; |
13273 | 13277 |
13274 if (unused_property_fields() == 0) return; | 13278 if (unused_property_fields() == 0) return; |
13275 | 13279 |
(...skipping 5662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
18938 | 18942 |
18939 Object* data_obj = | 18943 Object* data_obj = |
18940 constructor->shared()->get_api_func_data()->access_check_info(); | 18944 constructor->shared()->get_api_func_data()->access_check_info(); |
18941 if (data_obj->IsUndefined(isolate)) return nullptr; | 18945 if (data_obj->IsUndefined(isolate)) return nullptr; |
18942 | 18946 |
18943 return AccessCheckInfo::cast(data_obj); | 18947 return AccessCheckInfo::cast(data_obj); |
18944 } | 18948 } |
18945 | 18949 |
18946 } // namespace internal | 18950 } // namespace internal |
18947 } // namespace v8 | 18951 } // namespace v8 |
OLD | NEW |