OLD | NEW |
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 <stdlib.h> | 5 #include <stdlib.h> |
6 #include <limits> | 6 #include <limits> |
7 | 7 |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 | 9 |
10 #include "src/isolate-inl.h" | 10 #include "src/isolate-inl.h" |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 handle(Smi::FromInt(end_position), isolate), STRICT)); | 146 handle(Smi::FromInt(end_position), isolate), STRICT)); |
147 | 147 |
148 return *constructor; | 148 return *constructor; |
149 } | 149 } |
150 | 150 |
151 | 151 |
152 RUNTIME_FUNCTION(Runtime_DefineClassMethod) { | 152 RUNTIME_FUNCTION(Runtime_DefineClassMethod) { |
153 HandleScope scope(isolate); | 153 HandleScope scope(isolate); |
154 DCHECK(args.length() == 3); | 154 DCHECK(args.length() == 3); |
155 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); | 155 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); |
156 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); | 156 CONVERT_ARG_HANDLE_CHECKED(Name, name, 1); |
157 CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 2); | 157 CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 2); |
158 | 158 |
159 uint32_t index; | 159 uint32_t index; |
160 if (key->ToArrayIndex(&index)) { | |
161 RETURN_FAILURE_ON_EXCEPTION( | |
162 isolate, JSObject::SetOwnElement(object, index, function, STRICT)); | |
163 } | |
164 | |
165 Handle<Name> name; | |
166 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name, | |
167 Runtime::ToName(isolate, key)); | |
168 if (name->AsArrayIndex(&index)) { | 160 if (name->AsArrayIndex(&index)) { |
169 RETURN_FAILURE_ON_EXCEPTION( | 161 RETURN_FAILURE_ON_EXCEPTION( |
170 isolate, JSObject::SetOwnElement(object, index, function, STRICT)); | 162 isolate, JSObject::SetOwnElement(object, index, function, STRICT)); |
171 } else { | 163 } else { |
172 RETURN_FAILURE_ON_EXCEPTION( | 164 RETURN_FAILURE_ON_EXCEPTION( |
173 isolate, | 165 isolate, |
174 JSObject::SetOwnPropertyIgnoreAttributes(object, name, function, NONE)); | 166 JSObject::SetOwnPropertyIgnoreAttributes(object, name, function, NONE)); |
175 } | 167 } |
176 return isolate->heap()->undefined_value(); | 168 return isolate->heap()->undefined_value(); |
177 } | 169 } |
178 | 170 |
179 | 171 |
180 RUNTIME_FUNCTION(Runtime_DefineClassGetter) { | |
181 HandleScope scope(isolate); | |
182 DCHECK(args.length() == 3); | |
183 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); | |
184 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); | |
185 CONVERT_ARG_HANDLE_CHECKED(JSFunction, getter, 2); | |
186 | |
187 Handle<Name> name; | |
188 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name, | |
189 Runtime::ToName(isolate, key)); | |
190 RETURN_FAILURE_ON_EXCEPTION( | |
191 isolate, | |
192 JSObject::DefineAccessor(object, name, getter, | |
193 isolate->factory()->null_value(), NONE)); | |
194 return isolate->heap()->undefined_value(); | |
195 } | |
196 | |
197 | |
198 RUNTIME_FUNCTION(Runtime_DefineClassSetter) { | |
199 HandleScope scope(isolate); | |
200 DCHECK(args.length() == 3); | |
201 CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0); | |
202 CONVERT_ARG_HANDLE_CHECKED(Object, key, 1); | |
203 CONVERT_ARG_HANDLE_CHECKED(JSFunction, setter, 2); | |
204 | |
205 Handle<Name> name; | |
206 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name, | |
207 Runtime::ToName(isolate, key)); | |
208 RETURN_FAILURE_ON_EXCEPTION( | |
209 isolate, | |
210 JSObject::DefineAccessor(object, name, isolate->factory()->null_value(), | |
211 setter, NONE)); | |
212 return isolate->heap()->undefined_value(); | |
213 } | |
214 | |
215 | |
216 RUNTIME_FUNCTION(Runtime_ClassGetSourceCode) { | 172 RUNTIME_FUNCTION(Runtime_ClassGetSourceCode) { |
217 HandleScope shs(isolate); | 173 HandleScope shs(isolate); |
218 DCHECK(args.length() == 1); | 174 DCHECK(args.length() == 1); |
219 CONVERT_ARG_HANDLE_CHECKED(JSFunction, fun, 0); | 175 CONVERT_ARG_HANDLE_CHECKED(JSFunction, fun, 0); |
220 | 176 |
221 Handle<Object> script; | 177 Handle<Object> script; |
222 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 178 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
223 isolate, script, | 179 isolate, script, |
224 Object::GetProperty(fun, isolate->factory()->class_script_symbol())); | 180 Object::GetProperty(fun, isolate->factory()->class_script_symbol())); |
225 if (!script->IsScript()) { | 181 if (!script->IsScript()) { |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
479 } | 435 } |
480 | 436 |
481 Handle<Object> result; | 437 Handle<Object> result; |
482 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( | 438 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( |
483 isolate, result, | 439 isolate, result, |
484 Execution::Call(isolate, proto_function, receiver, argc, argv, false)); | 440 Execution::Call(isolate, proto_function, receiver, argc, argv, false)); |
485 return *result; | 441 return *result; |
486 } | 442 } |
487 } | 443 } |
488 } // namespace v8::internal | 444 } // namespace v8::internal |
OLD | NEW |