Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 48022b049c0790f18292984843e39aaa3872e9db..0fbd9c2cc082d2b5de218797909b4aac75257a21 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -673,7 +673,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateArrayLiteralShallow) { |
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSProxy) { |
ASSERT(args.length() == 2); |
- Object* handler = args[0]; |
+ CONVERT_ARG_CHECKED(JSReceiver, handler, 0); |
Object* prototype = args[1]; |
Object* used_prototype = |
prototype->IsJSReceiver() ? prototype : isolate->heap()->null_value(); |
@@ -683,9 +683,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSProxy) { |
RUNTIME_FUNCTION(MaybeObject*, Runtime_CreateJSFunctionProxy) { |
ASSERT(args.length() == 4); |
- Object* handler = args[0]; |
+ CONVERT_ARG_CHECKED(JSReceiver, handler, 0); |
Object* call_trap = args[1]; |
- Object* construct_trap = args[2]; |
+ RUNTIME_ASSERT(call_trap->IsJSFunction() || call_trap->IsJSFunctionProxy()); |
+ CONVERT_ARG_CHECKED(JSFunction, construct_trap, 2); |
Object* prototype = args[3]; |
Object* used_prototype = |
prototype->IsJSReceiver() ? prototype : isolate->heap()->null_value(); |
@@ -2066,8 +2067,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionRemovePrototype) { |
ASSERT(args.length() == 1); |
CONVERT_ARG_CHECKED(JSFunction, f, 0); |
- Object* obj = f->RemovePrototype(); |
- if (obj->IsFailure()) return obj; |
+ f->RemovePrototype(); |
return isolate->heap()->undefined_value(); |
} |
@@ -2307,19 +2307,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringCharCodeAt) { |
ASSERT(args.length() == 2); |
CONVERT_ARG_CHECKED(String, subject, 0); |
- Object* index = args[1]; |
- RUNTIME_ASSERT(index->IsNumber()); |
- |
- uint32_t i = 0; |
- if (index->IsSmi()) { |
- int value = Smi::cast(index)->value(); |
- if (value < 0) return isolate->heap()->nan_value(); |
- i = value; |
- } else { |
- ASSERT(index->IsHeapNumber()); |
- double value = HeapNumber::cast(index)->value(); |
- i = static_cast<uint32_t>(DoubleToInteger(value)); |
- } |
+ CONVERT_NUMBER_CHECKED(uint32_t, i, Uint32, args[1]); |
// Flatten the string. If someone wants to get a char at an index |
// in a cons string, it is likely that more indices will be |
@@ -3289,12 +3277,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringReplaceRegExpWithString) { |
} |
-Handle<String> Runtime::StringReplaceOneCharWithString(Isolate* isolate, |
- Handle<String> subject, |
- Handle<String> search, |
- Handle<String> replace, |
- bool* found, |
- int recursion_limit) { |
+Handle<String> StringReplaceOneCharWithString(Isolate* isolate, |
+ Handle<String> subject, |
+ Handle<String> search, |
+ Handle<String> replace, |
+ bool* found, |
+ int recursion_limit) { |
if (recursion_limit == 0) return Handle<String>::null(); |
if (subject->IsConsString()) { |
ConsString* cons = ConsString::cast(*subject); |
@@ -3322,7 +3310,7 @@ Handle<String> Runtime::StringReplaceOneCharWithString(Isolate* isolate, |
return subject; |
} else { |
- int index = StringMatch(isolate, subject, search, 0); |
+ int index = Runtime::StringMatch(isolate, subject, search, 0); |
if (index == -1) return subject; |
*found = true; |
Handle<String> first = isolate->factory()->NewSubString(subject, 0, index); |
@@ -3345,20 +3333,19 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringReplaceOneCharWithString) { |
// retry with a flattened subject string. |
const int kRecursionLimit = 0x1000; |
bool found = false; |
- Handle<String> result = |
- Runtime::StringReplaceOneCharWithString(isolate, |
- subject, |
- search, |
- replace, |
- &found, |
- kRecursionLimit); |
+ Handle<String> result = StringReplaceOneCharWithString(isolate, |
+ subject, |
+ search, |
+ replace, |
+ &found, |
+ kRecursionLimit); |
if (!result.is_null()) return *result; |
- return *Runtime::StringReplaceOneCharWithString(isolate, |
- FlattenGetString(subject), |
- search, |
- replace, |
- &found, |
- kRecursionLimit); |
+ return *StringReplaceOneCharWithString(isolate, |
+ FlattenGetString(subject), |
+ search, |
+ replace, |
+ &found, |
+ kRecursionLimit); |
} |
@@ -8864,6 +8851,15 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowReferenceError) { |
} |
+RUNTIME_FUNCTION(MaybeObject*, Runtime_ThrowNotDateError) { |
+ HandleScope scope(isolate); |
+ ASSERT(args.length() == 0); |
+ return isolate->Throw(*isolate->factory()->NewTypeError( |
+ "not_date_object", HandleVector<Object>(NULL, 0))); |
+} |
+ |
+ |
+ |
RUNTIME_FUNCTION(MaybeObject*, Runtime_StackGuard) { |
ASSERT(args.length() == 0); |
@@ -12260,7 +12256,7 @@ RUNTIME_FUNCTION(MaybeObject*, |
HandleScope scope(isolate); |
CONVERT_ARG_CHECKED(JSValue, script_value, 0); |
- |
+ RUNTIME_ASSERT(script_value->value()->IsScript()); |
Handle<Script> script = Handle<Script>(Script::cast(script_value->value())); |
const int kBufferSize = 32; |
@@ -12306,6 +12302,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditGatherCompileInfo) { |
HandleScope scope(isolate); |
CONVERT_ARG_CHECKED(JSValue, script, 0); |
CONVERT_ARG_HANDLE_CHECKED(String, source, 1); |
+ |
+ RUNTIME_ASSERT(script->value()->IsScript()); |
Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
JSArray* result = LiveEdit::GatherCompileInfo(script_handle, source); |