| 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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 Handle<JSGlobalProxy> ReinitializeJSGlobalProxy( | 127 Handle<JSGlobalProxy> ReinitializeJSGlobalProxy( |
| 128 Handle<JSFunction> constructor, | 128 Handle<JSFunction> constructor, |
| 129 Handle<JSGlobalProxy> global) { | 129 Handle<JSGlobalProxy> global) { |
| 130 CALL_HEAP_FUNCTION( | 130 CALL_HEAP_FUNCTION( |
| 131 constructor->GetIsolate(), | 131 constructor->GetIsolate(), |
| 132 constructor->GetHeap()->ReinitializeJSGlobalProxy(*constructor, *global), | 132 constructor->GetHeap()->ReinitializeJSGlobalProxy(*constructor, *global), |
| 133 JSGlobalProxy); | 133 JSGlobalProxy); |
| 134 } | 134 } |
| 135 | 135 |
| 136 | 136 |
| 137 void FlattenString(Handle<String> string) { | |
| 138 CALL_HEAP_FUNCTION_VOID(string->GetIsolate(), string->TryFlatten()); | |
| 139 } | |
| 140 | |
| 141 | |
| 142 Handle<String> FlattenGetString(Handle<String> string) { | |
| 143 CALL_HEAP_FUNCTION(string->GetIsolate(), string->TryFlatten(), String); | |
| 144 } | |
| 145 | |
| 146 | |
| 147 Handle<Object> GetProperty(Handle<JSReceiver> obj, | 137 Handle<Object> GetProperty(Handle<JSReceiver> obj, |
| 148 const char* name) { | 138 const char* name) { |
| 149 Isolate* isolate = obj->GetIsolate(); | 139 Isolate* isolate = obj->GetIsolate(); |
| 150 Handle<String> str = isolate->factory()->InternalizeUtf8String(name); | 140 Handle<String> str = isolate->factory()->InternalizeUtf8String(name); |
| 151 ASSERT(!str.is_null()); | 141 ASSERT(!str.is_null()); |
| 152 return Object::GetPropertyOrElement(obj, str); | 142 return Object::GetPropertyOrElement(obj, str); |
| 153 } | 143 } |
| 154 | 144 |
| 155 | 145 |
| 156 // Wrappers for scripts are kept alive and cached in weak global | 146 // Wrappers for scripts are kept alive and cached in weak global |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 // Even if the last line misses a line end, it is counted. | 245 // Even if the last line misses a line end, it is counted. |
| 256 line_ends->Add(src_len); | 246 line_ends->Add(src_len); |
| 257 return; | 247 return; |
| 258 } | 248 } |
| 259 } | 249 } |
| 260 } | 250 } |
| 261 | 251 |
| 262 | 252 |
| 263 Handle<FixedArray> CalculateLineEnds(Handle<String> src, | 253 Handle<FixedArray> CalculateLineEnds(Handle<String> src, |
| 264 bool with_last_line) { | 254 bool with_last_line) { |
| 265 src = FlattenGetString(src); | 255 src = String::Flatten(src); |
| 266 // Rough estimate of line count based on a roughly estimated average | 256 // Rough estimate of line count based on a roughly estimated average |
| 267 // length of (unpacked) code. | 257 // length of (unpacked) code. |
| 268 int line_count_estimate = src->length() >> 4; | 258 int line_count_estimate = src->length() >> 4; |
| 269 List<int> line_ends(line_count_estimate); | 259 List<int> line_ends(line_count_estimate); |
| 270 Isolate* isolate = src->GetIsolate(); | 260 Isolate* isolate = src->GetIsolate(); |
| 271 { | 261 { |
| 272 DisallowHeapAllocation no_allocation; // ensure vectors stay valid. | 262 DisallowHeapAllocation no_allocation; // ensure vectors stay valid. |
| 273 // Dispatch on type of strings. | 263 // Dispatch on type of strings. |
| 274 String::FlatContent content = src->GetFlatContent(); | 264 String::FlatContent content = src->GetFlatContent(); |
| 275 ASSERT(content.IsFlat()); | 265 ASSERT(content.IsFlat()); |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 708 Handle<Code> code) { | 698 Handle<Code> code) { |
| 709 heap->EnsureWeakObjectToCodeTable(); | 699 heap->EnsureWeakObjectToCodeTable(); |
| 710 Handle<DependentCode> dep(heap->LookupWeakObjectToCodeDependency(*object)); | 700 Handle<DependentCode> dep(heap->LookupWeakObjectToCodeDependency(*object)); |
| 711 dep = DependentCode::Insert(dep, DependentCode::kWeaklyEmbeddedGroup, code); | 701 dep = DependentCode::Insert(dep, DependentCode::kWeaklyEmbeddedGroup, code); |
| 712 CALL_HEAP_FUNCTION_VOID(heap->isolate(), | 702 CALL_HEAP_FUNCTION_VOID(heap->isolate(), |
| 713 heap->AddWeakObjectToCodeDependency(*object, *dep)); | 703 heap->AddWeakObjectToCodeDependency(*object, *dep)); |
| 714 } | 704 } |
| 715 | 705 |
| 716 | 706 |
| 717 } } // namespace v8::internal | 707 } } // namespace v8::internal |
| OLD | NEW |