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