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

Side by Side Diff: src/objects.cc

Issue 475423003: Implement Function.prototype.toMethod. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Remove stray change Created 6 years, 4 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
« no previous file with comments | « src/objects.h ('k') | src/property.h » ('j') | src/property.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/allocation-site-scopes.h" 8 #include "src/allocation-site-scopes.h"
9 #include "src/api.h" 9 #include "src/api.h"
10 #include "src/arguments.h" 10 #include "src/arguments.h"
(...skipping 9378 matching lines...) Expand 10 before | Expand all | Expand 10 after
9389 PrintF(" ** Queueing "); 9389 PrintF(" ** Queueing ");
9390 PrintName(); 9390 PrintName();
9391 PrintF(" for concurrent recompilation.\n"); 9391 PrintF(" for concurrent recompilation.\n");
9392 } 9392 }
9393 set_code_no_write_barrier( 9393 set_code_no_write_barrier(
9394 GetIsolate()->builtins()->builtin(Builtins::kInOptimizationQueue)); 9394 GetIsolate()->builtins()->builtin(Builtins::kInOptimizationQueue));
9395 // No write barrier required, since the builtin is part of the root set. 9395 // No write barrier required, since the builtin is part of the root set.
9396 } 9396 }
9397 9397
9398 9398
9399 Handle<JSFunction> JSFunction::Copy(Handle<JSFunction> function) {
9400 Isolate* isolate = function->GetIsolate();
9401 Handle<Map> map(function->map());
9402 Handle<SharedFunctionInfo> shared(function->shared());
9403 Handle<Context> context(function->context());
9404 Handle<JSFunction> clone =
9405 isolate->factory()->NewFunctionWithMapFromSharedFunctionInfo(
9406 map, shared, context);
9407
9408 if (shared->bound()) {
9409 clone->set_function_bindings(function->function_bindings());
9410 }
9411
9412 clone->set_properties(
arv (Not doing code reviews) 2014/08/20 15:35:53 For F.p.toMethod we should not copy the properties
9413 *isolate->factory()->NewFixedArray(function->properties()->length()));
9414
9415 Handle<FixedArrayBase> original_elements(function->elements());
Toon Verwaest 2014/08/20 07:43:11 Use the ElementsAccessor Copy method instead.
9416 if (original_elements->length() > 0) {
9417 if (original_elements->IsFixedArray()) {
9418 clone->set_elements(*isolate->factory()->CopyFixedArray(
9419 Handle<FixedArray>::cast(original_elements)));
9420 } else if (original_elements->IsFixedDoubleArray()) {
9421 clone->set_elements(*isolate->factory()->CopyFixedDoubleArray(
9422 Handle<FixedDoubleArray>::cast(original_elements)));
9423 } else {
9424 CHECK(false);
9425 }
9426 }
9427
9428
9429 Handle<DescriptorArray> descriptors(map->instance_descriptors());
9430 for (int i = 0; i < map->NumberOfOwnDescriptors(); i++) {
9431 Handle<Name> name(descriptors->GetKey(i));
9432 PropertyDetails details(descriptors->GetDetails(i));
9433 if (details.type() == NORMAL || details.type() == FIELD) {
Toon Verwaest 2014/08/20 07:43:11 NORMAL is not a valid entry for descriptors. Only
9434 Handle<Object> value =
9435 Object::GetProperty(function, name).ToHandleChecked();
9436 JSObject::SetOwnPropertyIgnoreAttributes(
9437 clone,
9438 name,
9439 value,
9440 details.attributes()).Assert();
9441 }
9442 }
9443 return clone;
9444 }
9445
9446
9399 void SharedFunctionInfo::AddToOptimizedCodeMap( 9447 void SharedFunctionInfo::AddToOptimizedCodeMap(
9400 Handle<SharedFunctionInfo> shared, 9448 Handle<SharedFunctionInfo> shared,
9401 Handle<Context> native_context, 9449 Handle<Context> native_context,
9402 Handle<Code> code, 9450 Handle<Code> code,
9403 Handle<FixedArray> literals, 9451 Handle<FixedArray> literals,
9404 BailoutId osr_ast_id) { 9452 BailoutId osr_ast_id) {
9405 Isolate* isolate = shared->GetIsolate(); 9453 Isolate* isolate = shared->GetIsolate();
9406 DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION); 9454 DCHECK(code->kind() == Code::OPTIMIZED_FUNCTION);
9407 DCHECK(native_context->IsNativeContext()); 9455 DCHECK(native_context->IsNativeContext());
9408 STATIC_ASSERT(kEntryLength == 4); 9456 STATIC_ASSERT(kEntryLength == 4);
(...skipping 7250 matching lines...) Expand 10 before | Expand all | Expand 10 after
16659 #define ERROR_MESSAGES_TEXTS(C, T) T, 16707 #define ERROR_MESSAGES_TEXTS(C, T) T,
16660 static const char* error_messages_[] = { 16708 static const char* error_messages_[] = {
16661 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS) 16709 ERROR_MESSAGES_LIST(ERROR_MESSAGES_TEXTS)
16662 }; 16710 };
16663 #undef ERROR_MESSAGES_TEXTS 16711 #undef ERROR_MESSAGES_TEXTS
16664 return error_messages_[reason]; 16712 return error_messages_[reason];
16665 } 16713 }
16666 16714
16667 16715
16668 } } // namespace v8::internal 16716 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/objects.h ('k') | src/property.h » ('j') | src/property.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698