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

Side by Side Diff: src/factory.cc

Issue 254623002: Simplify feedback vector creation and store in SharedFunctionInfo. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: REBASE. Created 6 years, 7 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 | Annotate | Revision Log
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 "factory.h" 5 #include "factory.h"
6 6
7 #include "conversions.h" 7 #include "conversions.h"
8 #include "isolate-inl.h" 8 #include "isolate-inl.h"
9 #include "macro-assembler.h" 9 #include "macro-assembler.h"
10 10
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
172 accessors->set_setter(*the_hole_value(), SKIP_WRITE_BARRIER); 172 accessors->set_setter(*the_hole_value(), SKIP_WRITE_BARRIER);
173 accessors->set_access_flags(Smi::FromInt(0), SKIP_WRITE_BARRIER); 173 accessors->set_access_flags(Smi::FromInt(0), SKIP_WRITE_BARRIER);
174 return accessors; 174 return accessors;
175 } 175 }
176 176
177 177
178 Handle<TypeFeedbackInfo> Factory::NewTypeFeedbackInfo() { 178 Handle<TypeFeedbackInfo> Factory::NewTypeFeedbackInfo() {
179 Handle<TypeFeedbackInfo> info = 179 Handle<TypeFeedbackInfo> info =
180 Handle<TypeFeedbackInfo>::cast(NewStruct(TYPE_FEEDBACK_INFO_TYPE)); 180 Handle<TypeFeedbackInfo>::cast(NewStruct(TYPE_FEEDBACK_INFO_TYPE));
181 info->initialize_storage(); 181 info->initialize_storage();
182 info->set_feedback_vector(*empty_fixed_array(), SKIP_WRITE_BARRIER);
183 return info; 182 return info;
184 } 183 }
185 184
186 185
187 // Internalized strings are created in the old generation (data space). 186 // Internalized strings are created in the old generation (data space).
188 Handle<String> Factory::InternalizeUtf8String(Vector<const char> string) { 187 Handle<String> Factory::InternalizeUtf8String(Vector<const char> string) {
189 Utf8StringKey key(string, isolate()->heap()->HashSeed()); 188 Utf8StringKey key(string, isolate()->heap()->HashSeed());
190 return InternalizeStringWithKey(&key); 189 return InternalizeStringWithKey(&key);
191 } 190 }
192 191
(...skipping 1619 matching lines...) Expand 10 before | Expand all | Expand 10 after
1812 void Factory::BecomeJSFunction(Handle<JSReceiver> object) { 1811 void Factory::BecomeJSFunction(Handle<JSReceiver> object) {
1813 ReinitializeJSReceiver(object, JS_FUNCTION_TYPE, JSFunction::kSize); 1812 ReinitializeJSReceiver(object, JS_FUNCTION_TYPE, JSFunction::kSize);
1814 } 1813 }
1815 1814
1816 1815
1817 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo( 1816 Handle<SharedFunctionInfo> Factory::NewSharedFunctionInfo(
1818 Handle<String> name, 1817 Handle<String> name,
1819 int number_of_literals, 1818 int number_of_literals,
1820 bool is_generator, 1819 bool is_generator,
1821 Handle<Code> code, 1820 Handle<Code> code,
1822 Handle<ScopeInfo> scope_info) { 1821 Handle<ScopeInfo> scope_info,
1822 Handle<FixedArray> feedback_vector) {
1823 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name); 1823 Handle<SharedFunctionInfo> shared = NewSharedFunctionInfo(name);
1824 shared->set_code(*code); 1824 shared->set_code(*code);
1825 shared->set_scope_info(*scope_info); 1825 shared->set_scope_info(*scope_info);
1826 shared->set_feedback_vector(*feedback_vector);
1826 int literals_array_size = number_of_literals; 1827 int literals_array_size = number_of_literals;
1827 // If the function contains object, regexp or array literals, 1828 // If the function contains object, regexp or array literals,
1828 // allocate extra space for a literals array prefix containing the 1829 // allocate extra space for a literals array prefix containing the
1829 // context. 1830 // context.
1830 if (number_of_literals > 0) { 1831 if (number_of_literals > 0) {
1831 literals_array_size += JSFunction::kLiteralsPrefixSize; 1832 literals_array_size += JSFunction::kLiteralsPrefixSize;
1832 } 1833 }
1833 shared->set_num_literals(literals_array_size); 1834 shared->set_num_literals(literals_array_size);
1834 if (is_generator) { 1835 if (is_generator) {
1835 shared->set_instance_class_name(isolate()->heap()->Generator_string()); 1836 shared->set_instance_class_name(isolate()->heap()->Generator_string());
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
1873 share->set_optimized_code_map(Smi::FromInt(0)); 1874 share->set_optimized_code_map(Smi::FromInt(0));
1874 share->set_scope_info(ScopeInfo::Empty(isolate())); 1875 share->set_scope_info(ScopeInfo::Empty(isolate()));
1875 Code* construct_stub = 1876 Code* construct_stub =
1876 isolate()->builtins()->builtin(Builtins::kJSConstructStubGeneric); 1877 isolate()->builtins()->builtin(Builtins::kJSConstructStubGeneric);
1877 share->set_construct_stub(construct_stub); 1878 share->set_construct_stub(construct_stub);
1878 share->set_instance_class_name(*Object_string()); 1879 share->set_instance_class_name(*Object_string());
1879 share->set_function_data(*undefined_value(), SKIP_WRITE_BARRIER); 1880 share->set_function_data(*undefined_value(), SKIP_WRITE_BARRIER);
1880 share->set_script(*undefined_value(), SKIP_WRITE_BARRIER); 1881 share->set_script(*undefined_value(), SKIP_WRITE_BARRIER);
1881 share->set_debug_info(*undefined_value(), SKIP_WRITE_BARRIER); 1882 share->set_debug_info(*undefined_value(), SKIP_WRITE_BARRIER);
1882 share->set_inferred_name(*empty_string(), SKIP_WRITE_BARRIER); 1883 share->set_inferred_name(*empty_string(), SKIP_WRITE_BARRIER);
1884 share->set_feedback_vector(*empty_fixed_array(), SKIP_WRITE_BARRIER);
1883 share->set_initial_map(*undefined_value(), SKIP_WRITE_BARRIER); 1885 share->set_initial_map(*undefined_value(), SKIP_WRITE_BARRIER);
1884 share->set_profiler_ticks(0); 1886 share->set_profiler_ticks(0);
1885 share->set_ast_node_count(0); 1887 share->set_ast_node_count(0);
1886 share->set_counters(0); 1888 share->set_counters(0);
1887 1889
1888 // Set integer fields (smi or int, depending on the architecture). 1890 // Set integer fields (smi or int, depending on the architecture).
1889 share->set_length(0); 1891 share->set_length(0);
1890 share->set_formal_parameter_count(0); 1892 share->set_formal_parameter_count(0);
1891 share->set_expected_nof_properties(0); 1893 share->set_expected_nof_properties(0);
1892 share->set_num_literals(0); 1894 share->set_num_literals(0);
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
2328 return Handle<Object>::null(); 2330 return Handle<Object>::null();
2329 } 2331 }
2330 2332
2331 2333
2332 Handle<Object> Factory::ToBoolean(bool value) { 2334 Handle<Object> Factory::ToBoolean(bool value) {
2333 return value ? true_value() : false_value(); 2335 return value ? true_value() : false_value();
2334 } 2336 }
2335 2337
2336 2338
2337 } } // namespace v8::internal 2339 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698