1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Copyright 2013 the V8 project authors. All rights reserved. 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file. 4b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 5b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/extensions/trigger-failure-extension.h" 6b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#include "src/v8.h" 7b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 8b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace v8 { 9b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochnamespace internal { 10b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 11b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 12b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochconst char* const TriggerFailureExtension::kSource = 13b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "native function triggerCheckFalse();" 14b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "native function triggerAssertFalse();" 15b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch "native function triggerSlowAssertFalse();"; 16b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 17b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 18b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochv8::Handle<v8::FunctionTemplate> 19b8a8cc1952d61a2f3a2568848933943a543b5d3eBen MurdochTriggerFailureExtension::GetNativeFunctionTemplate( 20b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch v8::Isolate* isolate, 21b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch v8::Handle<v8::String> str) { 22b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch if (strcmp(*v8::String::Utf8Value(str), "triggerCheckFalse") == 0) { 23b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return v8::FunctionTemplate::New( 24b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch isolate, 25b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TriggerFailureExtension::TriggerCheckFalse); 26b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } else if (strcmp(*v8::String::Utf8Value(str), "triggerAssertFalse") == 0) { 27b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return v8::FunctionTemplate::New( 28b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch isolate, 29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TriggerFailureExtension::TriggerAssertFalse); 30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } else { 31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch CHECK_EQ(0, strcmp(*v8::String::Utf8Value(str), "triggerSlowAssertFalse")); 32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch return v8::FunctionTemplate::New( 33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch isolate, 34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch TriggerFailureExtension::TriggerSlowAssertFalse); 35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch } 36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid TriggerFailureExtension::TriggerCheckFalse( 40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch const v8::FunctionCallbackInfo<v8::Value>& args) { 41b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch CHECK(false); 42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid TriggerFailureExtension::TriggerAssertFalse( 46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch const v8::FunctionCallbackInfo<v8::Value>& args) { 47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch DCHECK(false); 48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochvoid TriggerFailureExtension::TriggerSlowAssertFalse( 52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch const v8::FunctionCallbackInfo<v8::Value>& args) { 53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch SLOW_DCHECK(false); 54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} 55b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch 56b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch} } // namespace v8::internal 57