OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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/builtins/builtins.h" | 5 #include "src/builtins/builtins.h" |
6 #include "src/builtins/builtins-utils.h" | 6 #include "src/builtins/builtins-utils.h" |
7 | 7 |
8 #include "src/string-builder.h" | 8 #include "src/string-builder.h" |
9 #include "src/wasm/wasm-module.h" | 9 #include "src/wasm/wasm-module.h" |
10 | 10 |
11 namespace v8 { | 11 namespace v8 { |
12 namespace internal { | 12 namespace internal { |
13 | 13 |
14 #define CHECK_CALLSITE(recv, method) \ | 14 #define CHECK_CALLSITE(recv, method) \ |
15 CHECK_RECEIVER(JSObject, recv, method); \ | 15 CHECK_RECEIVER(JSObject, recv, method); \ |
16 if (!JSReceiver::HasOwnProperty( \ | 16 if (!JSReceiver::HasOwnProperty( \ |
17 recv, isolate->factory()->call_site_position_symbol()) \ | 17 recv, isolate->factory()->call_site_position_symbol()) \ |
18 .FromMaybe(false)) { \ | 18 .FromMaybe(false)) { \ |
19 THROW_NEW_ERROR_RETURN_FAILURE( \ | 19 THROW_NEW_ERROR_RETURN_FAILURE( \ |
20 isolate, \ | 20 isolate, \ |
21 NewTypeError(MessageTemplate::kCallSiteMethod, \ | 21 NewTypeError(MessageTemplate::kCallSiteMethod, \ |
22 isolate->factory()->NewStringFromAsciiChecked(method))); \ | 22 isolate->factory()->NewStringFromAsciiChecked(method))); \ |
23 } | 23 } |
24 | 24 |
25 BUILTIN(CallSiteConstructor) { | |
26 HandleScope scope(isolate); | |
27 | |
28 Handle<JSFunction> target = args.target<JSFunction>(); | |
29 Handle<Object> new_target = Handle<Object>::cast(args.new_target()); | |
30 Handle<Object> receiver = args.atOrUndefined(isolate, 1); | |
31 Handle<Object> fun = args.atOrUndefined(isolate, 2); | |
32 Handle<Object> pos = args.atOrUndefined(isolate, 3); | |
33 Handle<Object> strict_mode = args.atOrUndefined(isolate, 4); | |
34 | |
35 RETURN_RESULT_OR_FAILURE( | |
36 isolate, CallSiteUtils::Construct(isolate, target, new_target, receiver, | |
37 fun, pos, strict_mode)); | |
38 } | |
39 | |
40 namespace { | 25 namespace { |
41 | 26 |
42 Object* PositiveNumberOrNull(int value, Isolate* isolate) { | 27 Object* PositiveNumberOrNull(int value, Isolate* isolate) { |
43 if (value >= 0) return *isolate->factory()->NewNumberFromInt(value); | 28 if (value >= 0) return *isolate->factory()->NewNumberFromInt(value); |
44 return isolate->heap()->null_value(); | 29 return isolate->heap()->null_value(); |
45 } | 30 } |
46 | 31 |
47 } // namespace | 32 } // namespace |
48 | 33 |
49 BUILTIN(CallSitePrototypeGetColumnNumber) { | 34 BUILTIN(CallSitePrototypeGetColumnNumber) { |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
209 BUILTIN(CallSitePrototypeToString) { | 194 BUILTIN(CallSitePrototypeToString) { |
210 HandleScope scope(isolate); | 195 HandleScope scope(isolate); |
211 CHECK_CALLSITE(recv, "toString"); | 196 CHECK_CALLSITE(recv, "toString"); |
212 RETURN_RESULT_OR_FAILURE(isolate, CallSiteUtils::ToString(isolate, recv)); | 197 RETURN_RESULT_OR_FAILURE(isolate, CallSiteUtils::ToString(isolate, recv)); |
213 } | 198 } |
214 | 199 |
215 #undef CHECK_CALLSITE | 200 #undef CHECK_CALLSITE |
216 | 201 |
217 } // namespace internal | 202 } // namespace internal |
218 } // namespace v8 | 203 } // namespace v8 |
OLD | NEW |