| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 | 277 |
| 278 Handle<String> Factory::NewExternalStringFromTwoByte( | 278 Handle<String> Factory::NewExternalStringFromTwoByte( |
| 279 const ExternalTwoByteString::Resource* resource) { | 279 const ExternalTwoByteString::Resource* resource) { |
| 280 CALL_HEAP_FUNCTION( | 280 CALL_HEAP_FUNCTION( |
| 281 isolate(), | 281 isolate(), |
| 282 isolate()->heap()->AllocateExternalStringFromTwoByte(resource), | 282 isolate()->heap()->AllocateExternalStringFromTwoByte(resource), |
| 283 String); | 283 String); |
| 284 } | 284 } |
| 285 | 285 |
| 286 | 286 |
| 287 Handle<Context> Factory::NewGlobalContext() { | 287 Handle<Context> Factory::NewNativeContext() { |
| 288 CALL_HEAP_FUNCTION( | 288 CALL_HEAP_FUNCTION( |
| 289 isolate(), | 289 isolate(), |
| 290 isolate()->heap()->AllocateGlobalContext(), | 290 isolate()->heap()->AllocateNativeContext(), |
| 291 Context); | 291 Context); |
| 292 } | 292 } |
| 293 | 293 |
| 294 | 294 |
| 295 Handle<Context> Factory::NewModuleContext(Handle<ScopeInfo> scope_info) { | 295 Handle<Context> Factory::NewModuleContext(Handle<ScopeInfo> scope_info) { |
| 296 CALL_HEAP_FUNCTION( | 296 CALL_HEAP_FUNCTION( |
| 297 isolate(), | 297 isolate(), |
| 298 isolate()->heap()->AllocateModuleContext(*scope_info), | 298 isolate()->heap()->AllocateModuleContext(*scope_info), |
| 299 Context); | 299 Context); |
| 300 } | 300 } |
| (...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 ? isolate()->function_map() | 545 ? isolate()->function_map() |
| 546 : isolate()->strict_mode_function_map(), | 546 : isolate()->strict_mode_function_map(), |
| 547 pretenure); | 547 pretenure); |
| 548 | 548 |
| 549 if (function_info->ic_age() != isolate()->heap()->global_ic_age()) { | 549 if (function_info->ic_age() != isolate()->heap()->global_ic_age()) { |
| 550 function_info->ResetForNewContext(isolate()->heap()->global_ic_age()); | 550 function_info->ResetForNewContext(isolate()->heap()->global_ic_age()); |
| 551 } | 551 } |
| 552 | 552 |
| 553 result->set_context(*context); | 553 result->set_context(*context); |
| 554 | 554 |
| 555 int index = function_info->SearchOptimizedCodeMap(context->global_context()); | 555 int index = function_info->SearchOptimizedCodeMap(context->native_context()); |
| 556 if (!function_info->bound() && index < 0) { | 556 if (!function_info->bound() && index < 0) { |
| 557 int number_of_literals = function_info->num_literals(); | 557 int number_of_literals = function_info->num_literals(); |
| 558 Handle<FixedArray> literals = NewFixedArray(number_of_literals, pretenure); | 558 Handle<FixedArray> literals = NewFixedArray(number_of_literals, pretenure); |
| 559 if (number_of_literals > 0) { | 559 if (number_of_literals > 0) { |
| 560 // Store the global context in the literals array prefix. This | 560 // Store the native context in the literals array prefix. This |
| 561 // context will be used when creating object, regexp and array | 561 // context will be used when creating object, regexp and array |
| 562 // literals in this function. | 562 // literals in this function. |
| 563 literals->set(JSFunction::kLiteralGlobalContextIndex, | 563 literals->set(JSFunction::kLiteralNativeContextIndex, |
| 564 context->global_context()); | 564 context->native_context()); |
| 565 } | 565 } |
| 566 result->set_literals(*literals); | 566 result->set_literals(*literals); |
| 567 } | 567 } |
| 568 | 568 |
| 569 if (index > 0) { | 569 if (index > 0) { |
| 570 // Caching of optimized code enabled and optimized code found. | 570 // Caching of optimized code enabled and optimized code found. |
| 571 function_info->InstallFromOptimizedCodeMap(*result, index); | 571 function_info->InstallFromOptimizedCodeMap(*result, index); |
| 572 return result; | 572 return result; |
| 573 } | 573 } |
| 574 | 574 |
| (...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1103 isolate()->heap()->AllocateFunction(*isolate()->function_map(), | 1103 isolate()->heap()->AllocateFunction(*isolate()->function_map(), |
| 1104 *function_share, | 1104 *function_share, |
| 1105 *prototype), | 1105 *prototype), |
| 1106 JSFunction); | 1106 JSFunction); |
| 1107 } | 1107 } |
| 1108 | 1108 |
| 1109 | 1109 |
| 1110 Handle<JSFunction> Factory::NewFunction(Handle<String> name, | 1110 Handle<JSFunction> Factory::NewFunction(Handle<String> name, |
| 1111 Handle<Object> prototype) { | 1111 Handle<Object> prototype) { |
| 1112 Handle<JSFunction> fun = NewFunctionHelper(name, prototype); | 1112 Handle<JSFunction> fun = NewFunctionHelper(name, prototype); |
| 1113 fun->set_context(isolate()->context()->global_context()); | 1113 fun->set_context(isolate()->context()->native_context()); |
| 1114 return fun; | 1114 return fun; |
| 1115 } | 1115 } |
| 1116 | 1116 |
| 1117 | 1117 |
| 1118 Handle<JSFunction> Factory::NewFunctionWithoutPrototypeHelper( | 1118 Handle<JSFunction> Factory::NewFunctionWithoutPrototypeHelper( |
| 1119 Handle<String> name, | 1119 Handle<String> name, |
| 1120 LanguageMode language_mode) { | 1120 LanguageMode language_mode) { |
| 1121 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); | 1121 Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); |
| 1122 Handle<Map> map = (language_mode == CLASSIC_MODE) | 1122 Handle<Map> map = (language_mode == CLASSIC_MODE) |
| 1123 ? isolate()->function_without_prototype_map() | 1123 ? isolate()->function_without_prototype_map() |
| 1124 : isolate()->strict_mode_function_without_prototype_map(); | 1124 : isolate()->strict_mode_function_without_prototype_map(); |
| 1125 CALL_HEAP_FUNCTION(isolate(), | 1125 CALL_HEAP_FUNCTION(isolate(), |
| 1126 isolate()->heap()->AllocateFunction( | 1126 isolate()->heap()->AllocateFunction( |
| 1127 *map, | 1127 *map, |
| 1128 *function_share, | 1128 *function_share, |
| 1129 *the_hole_value()), | 1129 *the_hole_value()), |
| 1130 JSFunction); | 1130 JSFunction); |
| 1131 } | 1131 } |
| 1132 | 1132 |
| 1133 | 1133 |
| 1134 Handle<JSFunction> Factory::NewFunctionWithoutPrototype( | 1134 Handle<JSFunction> Factory::NewFunctionWithoutPrototype( |
| 1135 Handle<String> name, | 1135 Handle<String> name, |
| 1136 LanguageMode language_mode) { | 1136 LanguageMode language_mode) { |
| 1137 Handle<JSFunction> fun = | 1137 Handle<JSFunction> fun = |
| 1138 NewFunctionWithoutPrototypeHelper(name, language_mode); | 1138 NewFunctionWithoutPrototypeHelper(name, language_mode); |
| 1139 fun->set_context(isolate()->context()->global_context()); | 1139 fun->set_context(isolate()->context()->native_context()); |
| 1140 return fun; | 1140 return fun; |
| 1141 } | 1141 } |
| 1142 | 1142 |
| 1143 | 1143 |
| 1144 Handle<Object> Factory::ToObject(Handle<Object> object) { | 1144 Handle<Object> Factory::ToObject(Handle<Object> object) { |
| 1145 CALL_HEAP_FUNCTION(isolate(), object->ToObject(), Object); | 1145 CALL_HEAP_FUNCTION(isolate(), object->ToObject(), Object); |
| 1146 } | 1146 } |
| 1147 | 1147 |
| 1148 | 1148 |
| 1149 Handle<Object> Factory::ToObject(Handle<Object> object, | 1149 Handle<Object> Factory::ToObject(Handle<Object> object, |
| 1150 Handle<Context> global_context) { | 1150 Handle<Context> native_context) { |
| 1151 CALL_HEAP_FUNCTION(isolate(), object->ToObject(*global_context), Object); | 1151 CALL_HEAP_FUNCTION(isolate(), object->ToObject(*native_context), Object); |
| 1152 } | 1152 } |
| 1153 | 1153 |
| 1154 | 1154 |
| 1155 #ifdef ENABLE_DEBUGGER_SUPPORT | 1155 #ifdef ENABLE_DEBUGGER_SUPPORT |
| 1156 Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) { | 1156 Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) { |
| 1157 // Get the original code of the function. | 1157 // Get the original code of the function. |
| 1158 Handle<Code> code(shared->code()); | 1158 Handle<Code> code(shared->code()); |
| 1159 | 1159 |
| 1160 // Create a copy of the code before allocating the debug info object to avoid | 1160 // Create a copy of the code before allocating the debug info object to avoid |
| 1161 // allocation while setting up the debug info object. | 1161 // allocation while setting up the debug info object. |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1313 Handle<FixedArray> keys, | 1313 Handle<FixedArray> keys, |
| 1314 Handle<Map> map) { | 1314 Handle<Map> map) { |
| 1315 CALL_HEAP_FUNCTION(isolate(), | 1315 CALL_HEAP_FUNCTION(isolate(), |
| 1316 UpdateMapCacheWith(*context, *keys, *map), MapCache); | 1316 UpdateMapCacheWith(*context, *keys, *map), MapCache); |
| 1317 } | 1317 } |
| 1318 | 1318 |
| 1319 | 1319 |
| 1320 Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<Context> context, | 1320 Handle<Map> Factory::ObjectLiteralMapFromCache(Handle<Context> context, |
| 1321 Handle<FixedArray> keys) { | 1321 Handle<FixedArray> keys) { |
| 1322 if (context->map_cache()->IsUndefined()) { | 1322 if (context->map_cache()->IsUndefined()) { |
| 1323 // Allocate the new map cache for the global context. | 1323 // Allocate the new map cache for the native context. |
| 1324 Handle<MapCache> new_cache = NewMapCache(24); | 1324 Handle<MapCache> new_cache = NewMapCache(24); |
| 1325 context->set_map_cache(*new_cache); | 1325 context->set_map_cache(*new_cache); |
| 1326 } | 1326 } |
| 1327 // Check to see whether there is a matching element in the cache. | 1327 // Check to see whether there is a matching element in the cache. |
| 1328 Handle<MapCache> cache = | 1328 Handle<MapCache> cache = |
| 1329 Handle<MapCache>(MapCache::cast(context->map_cache())); | 1329 Handle<MapCache>(MapCache::cast(context->map_cache())); |
| 1330 Handle<Object> result = Handle<Object>(cache->Lookup(*keys)); | 1330 Handle<Object> result = Handle<Object>(cache->Lookup(*keys)); |
| 1331 if (result->IsMap()) return Handle<Map>::cast(result); | 1331 if (result->IsMap()) return Handle<Map>::cast(result); |
| 1332 // Create a new map and add it to the cache. | 1332 // Create a new map and add it to the cache. |
| 1333 Handle<Map> map = | 1333 Handle<Map> map = |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1400 | 1400 |
| 1401 | 1401 |
| 1402 Handle<Object> Factory::ToBoolean(bool value) { | 1402 Handle<Object> Factory::ToBoolean(bool value) { |
| 1403 return Handle<Object>(value | 1403 return Handle<Object>(value |
| 1404 ? isolate()->heap()->true_value() | 1404 ? isolate()->heap()->true_value() |
| 1405 : isolate()->heap()->false_value()); | 1405 : isolate()->heap()->false_value()); |
| 1406 } | 1406 } |
| 1407 | 1407 |
| 1408 | 1408 |
| 1409 } } // namespace v8::internal | 1409 } } // namespace v8::internal |
| OLD | NEW |