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